it-swarm-eu.dev

mysql_real_escape_string non è definito

Sto usando PHP versione 5.3 e sto provando ad 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 PHP versione 5.3.

11
MichaelH

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

L'estensione mysql è stata deprecata poiché PHP 5.5. Al suo posto dovrebbe essere usata l'estensione mysqli o PDO. La deprecazione è stata decisa in mysql_deprecation , dove è possibile trovare una discussione sulle ragioni di questa decisione.

e rimosso in PHP 7 .


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

Funziona un'altra funzione mysql_? (Non dovrebbe)

Assicurati di avere questa riga 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.

18
Vyktor

Nel mio caso ho usato mysqli_real_escape_string invece di mysql_real_escape_string.

2
speksy

È 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_ * ;-)

1
nemesisfixx

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

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

0
shinosn

L'estensione MySQL è deprecata poiché 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 è di sostituire ext/mysql con MySQLi, PDO o altra estensione di database supportata.

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

0