2010-02-02 14 views

risposta

13

Poiché l'errore viene generato dalla chiamata a mysql_real_escape_string() implica piuttosto che non è stato chiamato prima mysql_connect() e passato un handle db valido a mysql_real_escape_string (o la chiamata a mysql_connect() non è riuscita).

In alcune circostanze, l'estensione mysql tenterà di connettersi automaticamente utilizzando le impostazioni predefinite in php.ini, non riuscendo a my.cnf se queste non sono disponibili - che ovviamente non sono valide. Oppure potrebbe essere che le impostazioni siano valide ma il mysqld non è in esecuzione.

Hai degli script che si collegano al database con successo?

Hai un nome utente e una password per il database?

Prova:

check_running(); 

$user=''; // fill in your details 
$password=''; // fill in your details 

$hosts=array(
    'localhost', '127.0.0.1', $_SERVER['HTTP_HOST'], $_SERVER['SERVER_ADDR'] 
); 
foreach ($hosts as $addr) { 
    try_con($addr, $user, $password); 
    try_con($addr . ':3306', $user, $password); 
} 

function try_con($host, $user, $password) 
{ 
$dbh=mysql_connect($host, $user, $password); 
if ($dbh) { 
    print "Connected OK with $host, $user, $password<br />\n"; 
} else { 
    print "Failed with $host, $user, $password<br />\n"; 
} 
} 

function check_running() 
{ 
    // this assumes that you are using Apache on a Unix/Linux box 
    $chk=`ps -ef | grep httpd | grep -v grep`; 
    if ($chk) { 
     print "Checking for mysqld process: " . `ps -ef | grep mysqld | grep -v grep` . "<br />\n"; 
    } else { 
     print "Cannot check mysqld process<br />\n"; 
    } 
} 

HTH

C.

+0

sembra una bella risposta, non è ancora stata applicata. grazie per l'aiuto – diEcho

+0

Cosa succede se si ottiene questo errore quando si eseguono gli strumenti da riga di comando come 'mysqlshow',' mysql'? – NoBugs

2

Sì, esattamente, alcuni server passano i parametri di connessione di default quando si utilizzano le funzioni di MySQL prima connessione e buttare fuori un errore, alcuni altri assistenti di lavoro bene ovunque posizioni il codice è sempre più sicuro posizionare mysql_real_escape_string() dopo aver stabilito la connessione mysql_connect()

Problemi correlati