Ongedefinieerde functie mysql_connect()

Ik heb aptitude install php5-mysql uitgevoerd (en MySQL/Apache 2 opnieuw opgestart), maar ik krijg nog steeds deze foutmelding:

Fatale fout: oproep naar niet-gedefinieerde functie mysql_connect() in /home/validate.php op regel 21

phpinfo() zegt dat het bestand /etc/php5/apache2/conf.d/pdo_mysql.ini is geparseerd.


Antwoord 1, autoriteit 100%

Nou, dit is je kans! Het lijkt erop dat BOB klaar is; gebruik dat in plaats daarvan.

Probeer te controleren of de PHP MySQL-uitbreidingsmodule wordt geladen:

<?php
    phpinfo();
?>

Als het er niet is, voeg dan het volgende toe aan het bestand php.ini:

extension=php_mysql.dll

Antwoord 2, autoriteit 135%

Als je al PHP7 gebruikt, zijn de voorheen verouderde functies mysql_* volledig verwijderd, dus je moet je code bijwerken met de PDO-functies of mysqli_* functies in plaats daarvan.

Als dat niet mogelijk is, heb ik als oplossing een klein PHP include-bestand gemaakt, dat de oude mysql_*-functies herschept met mysqli_*()-functions: fix_mysql.inc.php


Antwoord 3, autoriteit 107%

Ik zie dat je dit hebt getagd met Ubuntu. Hoogstwaarschijnlijk is het MySQL-stuurprogramma (en mogelijk MySQL) niet geïnstalleerd. Ervan uitgaande dat u SSH of terminaltoegang en sudo-rechten heeft, logt u in op de server en voert u dit uit:

sudo apt-get install mysql-server mysql-client php5-mysql

Als de MySQL-pakketten of het php5-mysql-pakket al zijn geïnstalleerd, worden ze hierdoor bijgewerkt.


UPDATE

Aangezien dit antwoord nog steeds af en toe een klik krijgt, ga ik het updaten met PHP 7. PHP 7 vereist een ander pakket voor MySQL, dus je zult een ander argument willen gebruiken voor de opdracht apt-get.

# Replace 7.4 with your version of PHP
sudo apt-get install mysql-server mysql-common php7.4 php7.4-mysql

En belangrijker nog, mysql_connect() is verouderd sinds PHP v5.5.0. Raadpleeg hier de officiële documentatie: PHP: mysql_connect()


Antwoord 4, autoriteit 91%

Als iemand hier kwam met het probleem van docker php officiële afbeeldingen, typ dan het onderstaande commando erin de docker-container.

$ docker-php-ext-install mysql mysqli pdo pdo_mysql

Raadpleeg voor meer informatie de bovenstaande link How to install more PHP extensions (Maar het is een beetje moeilijk voor mij…).

Of dit document kan u helpen.

https://docs.docker.com/samples/library/php/


Antwoord 5, autoriteit 31%

Ik zat ook met hetzelfde probleem van ongedefinieerde MySQL_connect(). Ik probeerde wijzigingen aan te brengen in het PHP.ini-bestand, maar ik kreeg dezelfde foutmelding.
Toen kwam ik bij deze oplossing waar ik mijn code veranderde van afgeschreven php-functies naar nieuwe functies.

$con=mysqli_connect($host,$user,$password);
mysqli_select_db($con,dbname); 
//To select the database
session_start(); //To start the session
$query=mysqli_query($con,your query); 
//made query after establishing connection with database.

Ik hoop dat dit je zal helpen .
Deze oplossing werkt correct voor mij.

BEWERKEN:

Als u een upgrade uitvoert van oude php, moet u apt-get install php7.0-mysql


Antwoord 6, autoriteit 15%

Probeer:

<?php
  phpinfo();
?>

Voer de pagina uit en zoek naar mysql. Als het niet wordt gevonden, voert u het volgende uit in de shell en start u de Apache-server opnieuw:

sudo apt-get install mysql-server mysql-client php5-mysql

Zorg er ook voor dat je alle volgende regels ergens in je apache2.conf (of in je conf.d/php.ini) bestand hebt staan, van

;extension=php_mysql.so

naar

extension=php_mysql.so

Antwoord 7, autoriteit 13%

In php.ini-bestand

wijzig dit

;extension=php_mysql.dll

in

extension=php_mysql.dll

Antwoord 8, autoriteit 7%

Mijn gok is dat je PHP-installatie niet is gecompileerd met MySQL-ondersteuning.

Controleer je configure-opdracht (php -i | grep mysql). Je zou iets als '--with-mysql=shared,/usr' moeten zien.

Je kunt voor volledige instructies kijken op http://php.net/manual/en /mysql.installatie.php. Al zou ik liever voor de door @wanovak voorgestelde oplossing gaan.

Toch denk ik dat je MySQL-ondersteuning nodig hebt om PDO te gebruiken.


Antwoord 9, autoriteit 5%

De vraag is getagd met ubuntu, maar de oplossing voor het verwijderen van commentaar op de extension=mysqli.dll is specifiek voor Windows. Ik ben hier in de war?!, hoe dan ook, voer eerst <? php phpinfo ?> en zoek naar mysql* onder de kop Configuration. Als je zoiets niet ziet, betekent dit dat je php-mysql niet hebt geïnstalleerd of ingeschakeld. Dus installeer eerst php-mysql

sudo apt get install php-mysql

Dit commando installeert php-mysql afhankelijk van de php die je al hebt geïnstalleerd, dus maak je geen zorgen over de versie!!.

Dan komt de unix-specifieke oplossing, in het php.ini-bestand verwijder je commentaar op de regel

extension=msql.so

verifieer dat msql.so aanwezig is in /usr/lib/php/<timestamp_folder>,
ELSE

extension=path/to/msql.so

Start dan eindelijk de apache en mysql services, en je zou nu de mysql sectie onder Configrations moeten zien kop in phpinfo page


Antwoord 10

Ik kreeg deze foutmelding omdat het project waar ik aan werkte was ontwikkeld op php 5.6 en na installatie kon het project niet worden uitgevoerd op php7.1.

Alleen voor iedereen die Vagrant gebruikt met ubuntu/nginx, is er in de nginx-directory(/etc/nginx/), een directory met de naam “sites-available” die een bestand bevat met de naam zoals de url die is geconfigureerd voor de zwerver. In mijn geval was homestead.app. Binnen dit bestand is er een regel die iets zegt als

    fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;

Daar kunt u de php-versie wijzigen in de gewenste versie voor die specifieke site.

Heb dit gegoogled, maar kon niet echt een eenvoudig antwoord vinden waarin stond waar te zoeken en wat te veranderen.

Ik hoop dat dit iemand helpt.
Bedankt.


Antwoord 11

Voor CentOS 7.8 & PHP 7.3

yum install rh-php73-php-mysqlnd

En herstart dan apache/php.


Antwoord 12

Als u de foutmelding krijgt als

Fatale fout: aanroep naar ongedefinieerde functie mysql_connect()

Gelieve in te loggen op het cPanel >> Klik op Selecteer Php-versie >> selecteer de extensie MYSQL


Antwoord 13

Er moet een syntaxisfout zijn. Kopieer/plak deze code en kijk of het werkt:

<?php
    $link = mysql_connect('localhost', 'root', '');
    if (!$link) {
        die('Could not connect:' . mysql_error());
    }
    echo 'Connected successfully';
    ?

Ik had dezelfde foutmelding. Het bleek dat ik de functie msql_connect() gebruikte in plaats van mysql_connect().


Antwoord 14

(Windows mysql-configuratie)

Stap 1: Ga naar Apache Configuratiescherm > Apache > Config > PHP.ini

Stap 2: Zoek in Kladblok (Ctrl+F) naar: ;extension_dir = "" (kan worden becommentarieerd met een ;). Vervang deze regel door: extension_dir = "C:\php\ext" (je hoeft de ; aan het begin van de zin niet te verwijderen).

Stap 3: Zoek naar: extension=php_mysql.dll en verwijder de ; in het begin.

Stap 4: Sla uw Apache HTTP-server op en start deze opnieuw. (Op Windows gebeurt dit meestal via een gebruikersinterface)

Dat is het 🙂

Als je fouten krijgt over het ontbreken van php_mysql.dll, moet je dit bestand waarschijnlijk downloaden van de php.net-site of de pecl.php.net. (Wees voorzichtig over waar je het vandaan haalt)

Meer info over PHP: Installatie van extensies op Windows – Handmatig

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Other episodes