mysql_real_escape_string non è definito

Sto usando PHP versione 5.3 e sto provando a usare mysql_real_escape_string($unescaped_string) nel mio codice, ma ottengo l'errore:

 Fatal error: Call to undefined function mysql_real_escape_string() in /var/www/engine/database.php on line 38 

Posso comunque connettermi al database. Perché non è disponibile?

Sto usando la versione 5.3 di PHP.

Aggiornamento come menzionato nel commento , mysql_ è stato deprecato dal 5.5 :

L'estensione mysql è stata deprecata da PHP 5.5. Al suo posto dovrebbe essere usata l'estensione mysqli o PDO. La deprecazione è stata decisa in mysql_deprecation , where è ansible trovare una discussione sui motivi alla base di questa decisione.

e rimosso in PHP 7 .


mysql_real_escape_string() è la parte standard della function MySQL "batch" e dovrebbe funzionare sempre se l'estensione è caricata correttamente.

mysql_ un'altra function mysql_ ? (Non dovrebbe)

Assicurati di avere questa row non commentata nel tuo php.ini :

 extension=mysql.so 

Inoltre sarebbe saggio usare mysqli o PDO invece ( mysql_ è deprecato ), entrambi possono prendersi cura di fuggire per te.

È interessante notare che, dopo aver esplorato tutte le altre soluzioni qui, ho capito che il problema è dovuto al fatto che l'estensione php5-mysql non è stata ancora installata – non è installata di default su una nuova Ubuntu, né quando si installa un nuovo php. Quindi, per me la soluzione è diventata: installa l'estensione php5-mysql:

 sudo apt-get install php5-mysql 

Dopo questo, non ho avuto di nuovo quei cattivi errori mysql_ * 😉

Forse il tuo problema risiede nella configuration del server php (compilazione).

Qui ulteriori informazioni su mysql_real_escape_string: http://www.php.net/manual/en/function.mysql-real-escape-string.php

L'estensione MySQL è deprecata da PHP 5.5. mysql_real_escape_string () non è quindi disponibile in PHP 7. Ciò significa che l'input dell'utente non può essere scappato correttamente e lascia il codice aperto agli attacchi di SQL injection.

La soluzione PHP-ufficiale è quella di sostituire ext / mysql con MySQLi, PDO o altra estensione di database supportta.

Per prevenire attacchi SQL injection, si consiglia di utilizzare istruzioni preparate e query parametrizzate quando si parla al database.