2012-05-16 21 views
30

Ho installato PHP, MySQL e Apache. localhost() per PHP e funziona bene. Ma dopo aver scaricato MySQL, riporta:Errore irreversibile: chiamata a funzione non definita mysql_connect()

Fatal error: Call to undefined function mysql_connect()

Come posso risolvere questo?

+0

Hai riavviare Apache dopo aver installato i pacchetti? – Devator

+0

http://nz.php.net/manual/en/mysql.installation.php – zerkms

+1

Hai taggato la tua domanda [mysql-error-1064] - come lo ottieni se il tuo script non riesce a comunicare con MySQL? – Repox

risposta

6

Verificare che l'installazione di PHP sia stata compilata con il supporto mysql. Creare una pagina Web di prova contenente <?php phpinfo(); exit(); ?> e caricarla nel browser. Cerca la pagina per MySQL. Se non lo vedi, devi ricompilare PHP con il supporto MySQL o reinstallare un pacchetto PHP che lo ha integrato

+4

e qui è la fonte che hai copiato da http://www.somacon.com/p109.php –

+1

sì offcourse per il suo aiuto! –

+0

Ho un problema simile, non vedo alcun MySQL nella mia pagina di test: https://jsfiddle.net/ad0gd90y/. Invece ho visto solo "mysqlnd". Devo installare MySQL prima di PHP? Come ricompongo PHP con MySQL [email protected] – rosemary

29

Apri il tuo terminale ed esegui il comando muggito.

sudo apt-get install mysql-server 

Se si esegue PHP si sarà anche necessario installare il modulo PHP per MySQL 5:

sudo apt-get install php5-mysql 
1

sto usando Windows 8 n questo problema ottenuto risolto modificando le variabili di ambiente

follow questi passaggi: Apri le proprietà del mio computer-> Impostazioni avanzate del sistema-> Variabili d'ambiente. In "variabili di sistema", selezionare "percorso" e fare clic su "modifica" In "valore variabile", aggiungere "C: \ php;" O il percorso in cui php installato.

fare clic su OK e applicare le impostazioni e riavviare il sistema. Dovrebbe funzionare.

4
PHP.INI 

Controllare se avete dimenticato di attivare le opzioni di seguito (carica i moduli per mysql, tra gli altri):

; Directory in which the loadable extensions (modules) reside. 
; http://php.net/extension-dir 
; extension_dir = "./" 
; On windows: 
extension_dir = "ext" 
2

Ho avuto questo stesso problema su RHEL6. Risulta che il file mysql.ini in /etc/php.d aveva solo un nome di modulo ma aveva bisogno di un nome di percorso completo. Sul mio sistema RHEL6 la voce che funziona è:

; Enable mysql extension module 

extension=/usr/lib64/php/modules/mysql.so 

Dopo aver modificato il file, ho riavviato apache e tutto ha funzionato.

14

Se si verifica questo errore dopo l'aggiornamento a PHP 7.0, si utilizzano librerie deprecate.

mysql_connect — Open a connection to a MySQL Server
Warning
This extension was deprecated in PHP 5.5.0, and it was removed in PHP 7.0.0. Instead, the MySQLi or PDO_MySQL extension should be used.

Maggiori informazioni qui: http://php.net/manual/en/function.mysql-connect.php

+0

Questo dovrebbe essere contrassegnato come la risposta accettata - è una cattiva pratica continuare ad usare le chiamate mysql_ *. – Skytiger

22

Usa "mysqli_connect"

$con = mysqli_connect("127.0.0.1","root","pass","your_database"); 

che verrà succederà lavoro, ho fissato il mio problema con questo.

0

Verificare se il modulo mysqli è installato per la versione di PHP

$ ls /etc/php/7.0/mods-available/mysql* 
/etc/php/7.0/mods-available/mysqli.ini /etc/php/7.0/mods-available/mysqlnd.ini 

Attivare il modulo

$ sudo phpenmod mysqli 
0

Questo codice può aiutare a

<?php 

$servername = "localhost"; 
$username = "root"; 
$password = ""; 


$con = new mysqli($servername, $username, $password); 

?> 

Ma cambiare il "nomeserver", "username" e "password"

0

Ecco una soluzione rapida:

Tutti i professionisti mi odieranno probabilmente per questa risposta. Ma ho ottenuto lo stesso errore su un server: Errore irreversibile: Errore non rilevato: chiamata a funzione non definita mysql_connect() che utilizzava PHP 7. Non ha avuto il tempo di riscrivere tutto il codice mysql in modo da risolvere temporaneamente e temporaneamente se qualcuno ha bisogno è in CPANEL cercare la configurazione PHP e cambiare la versione per quell'account in qualcosa come PHP 5.4 invece di PHP 7. Quindi il codice ha funzionato bene senza l'errore sopra riportato.

0

Una soluzione potrebbe essere quella di utilizzare le funzioni di adattamento come questi per iniziare a utilizzare mysqli invece di mysql sopra la vostra intera applicazione:

if (!function_exists('mysql_connect')) { 
    function mysql_connect($host = '', $user = '', $password = '', $database = '', $port = 0, $socket = '') { 
     return mysqli_connect($host, $user, $password, $database, $port, $socket); 
    } 
} 


if (!function_exists('mysql_select_db')) { 
    function mysql_select_db($link, $dbname) { 
     mysqli_select_db($link, $dbname); 
    } 
} 
-1

Il problema si presenta quando si sta utilizzando mysql_connect nelle vostre linee di codice quindi basta aggiungere come nel mysqli_cOnnect e risolverà il problema.
Devi anche usare mysqli attraverso le tue code line o il Problem si ripresenta.
esempio mysql_select_db sarà quindi mysqL_select_db.
Questo è per la selezione del Database.

Grazie Spero che questo aiuti

1

Questo errore è in arrivo solo per la versione di PHP v7.0. è possibile evitare questi utilizzando PHP v5.0 altro

usano

mysqli_connect("localhost","root","") 

ho fatto solo mysqli da MySQL

Problemi correlati