Eftersom felet orsakas av anropet till mysql_real_escape_string()
det antyder snarare att du inte anropade mysql_connect()
först och skicka ett giltigt db-handtag till mysql_real_escape_string
(eller anropet till mysql_connect()
misslyckades).
Under vissa omständigheter kommer mysql-tillägget att försöka ansluta automatiskt med standardinställningarna i php.ini, och misslyckas över till my.cnf om dessa inte är tillgängliga - som uppenbarligen inte är giltiga. Eller så kan det vara så att inställningarna är giltiga men mysqld körs inte.
Har du skript som ansluter till databasen?
Har du ett användarnamn och lösenord för databasen?
Försök:
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";
}
}