2016-01-03 29 views
38

Sto provando a fare una semplice connessione con XAMPP e server MySQL, ma ogni volta che provo ad inserire dati o connettermi al database, ottengo questo errore.Errore irreversibile: Errore non rilevato: chiamata alla funzione non definita mysql_connect()

Fatal error: Uncaught Error: Call to undefined function mysql_connect() in C:\xampp\htdocs\register.php:22
Stack trace: #0 {main} thrown in C:\xampp\htdocs\register.php on line 22

Esempio di linea 22:

$link = mysql_connect($mysql_hostname , $mysql_username); 
+1

passato il codice completo. –

+7

[** Per favore, non usare le funzioni 'mysql_ *' nel nuovo codice **] (http://stackoverflow.com/q/12859942). Non sono più mantenuti [e sono ufficialmente deprecati] (https://wiki.php.net/rfc/mysql_deprecation). Vedi la [** red box **] (http://uk.php.net/manual/en/function.mysql-connect.php)? Scopri invece [* prepared statements *] (http://en.wikipedia.org/wiki/Prepared_statement) e usa [PDO] (http://php.net/pdo) o [MySQLi] (http: // php.net/mysqli). – Rizier123

+0

Demeteor

risposta

62

mysql_* funzioni sono state rimosse in PHP 7.

Probabilmente avete PHP 7 in XAMPP. Ora hai due alternative: MySQLi e PDO.

Inoltre, here è una bella pagina wiki su PDO.

20

È possibile utilizzare mysqli_connect($mysql_hostname , $mysql_username) anziché mysql_connect($mysql_hostname , $mysql_username).

mysql_* funzioni sono state rimosse da PHP 7. Ora avete due alternative: MySQLi e PDO.

+0

Probabilmente occorrono altre modifiche al tuo codice. – ceejayoz

+1

Su Ubuntu 16.04, questo richiedeva il pacchetto' php7.0-mysql'. ceejayoz dice, ci sono in realtà diverse modifiche API richieste, e non solo per i nomi delle funzioni, ma per l'ordine dei loro argomenti.Molto frustrante –

+0

Rough one ma ha funzionato per me, almeno fino a ottimizzare il mio codice con la connessione PDO – adeguk

1

mysql_ funzioni sono state rimosse da PHP 7. È ora possibile utilizzare MySQLi o PDO.

esempio MySQLi:

mysqli_connect($mysql_hostname, $mysql_username, $mysql_password, $mysql_dbname); 

mysqli_connect reference link

14

Si raccomanda di utilizzare il MySQLi o estensioni DOP. Non è consigliabile utilizzare la vecchia estensione mysql per il nuovo sviluppo, poiché era obsoleto in PHP 5.5.0 ed è stata rimossa in PHP 7.

PHP offre tre API diverse per la connessione a MySQL. Di seguito mostriamo le API fornite dalle estensioni mysql, mysqli e PDO. Ogni frammento di codice crea una connessione a un server MySQL in esecuzione su "example.com" utilizzando il nome utente "username" e la password "password". E viene eseguita una query per salutare l'utente.

Esempio # 1 Confrontando i tre API di MySQL

<?php 
// mysqli 
$mysqli = new mysqli("example.com", "username", "password", "database"); 
$result = $mysqli->query("SELECT 'Hello, dear MySQL user!' AS _message FROM DUAL"); 
$row = $result->fetch_assoc(); 
echo htmlentities($row['_message']); 

// PDO 
$pdo = new PDO('mysql:host=example.com;dbname=database', 'username', 'password'); 
$statement = $pdo->query("SELECT 'Hello, dear MySQL user!' AS _message FROM DUAL"); 
$row = $statement->fetch(PDO::FETCH_ASSOC); 
echo htmlentities($row['_message']); 

// mysql 
$c = mysql_connect("example.com", "username", "password"); 
mysql_select_db("database"); 
$result = mysql_query("SELECT 'Hello, dear MySQL user!' AS _message FROM DUAL"); 
$row = mysql_fetch_assoc($result); 
echo htmlentities($row['_message']); 
?> 

vi suggerisco di provare sia MySQLi e DOP e scoprire che cosa il design API si preferisce.

Leggi Choosing an API e Why shouldn't I use mysql_* functions in PHP?

-1

avete ottenuto questo errore perché la funzione mysql_connect (in realtà, tutte le mysql_* funzioni) sono stati rimossi da PHP 7. È ora possibile utilizzare MySQLi o PDO.

Esempio:

$mysqli = new mysqli($hostname, $username, $password, $database); 
-2

mysql_* funzioni sono state rimosse in PHP 7.

Ora avete due alternative: MySQLi e PDO.

Di seguito è riportato un prima (-) e dopo (+) il confronto di alcune modifiche comuni alle MySQLi, presi direttamente dal codice di lavoro:

-if (!$dbLink = mysql_connect($dbHost, $dbUser, $dbPass)) 
+if (!$dbLink = mysqli_connect($dbHost, $dbUser, $dbPass)) 

-if (!mysql_select_db($dbName, $dbLink)) 
+if (!mysqli_select_db($dbLink, $dbName)) 

-if (!$result = mysql_query($query, $dbLink)) { 
+if (!$result = mysqli_query($dbLink, $query)) { 

-while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { 
+while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) { 

-mysql_close($dbLink); 
+mysqli_close($dbLink); 
+0

perché il giù voti? – user664833

Problemi correlati