2010-02-02 14 views

Respuesta

13

Como la llamada a mysql_real_escape_string() implica el error, no se debe invocar a mysql_connect() primero y pasar un identificador de db válido a mysql_real_escape_string (o la llamada a mysql_connect() falló).

En algunas circunstancias, la extensión mysql intentará conectarse automáticamente usando la configuración predeterminada en php.ini, fallando en my.cnf si no están disponibles, lo que obviamente no es válido. O puede ser que la configuración sea válida, pero el mysqld no se está ejecutando.

¿Tiene secuencias de comandos que se conectan a la base de datos con éxito?

¿Tiene un nombre de usuario y una contraseña para la base de datos?

Probar:

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

parece una buena respuesta, todavía no se ha aplicado. gracias por su ayuda – diEcho

+0

¿Qué pasa si obtiene este error al ejecutar las herramientas de línea de comandos como 'mysqlshow',' mysql'? – NoBugs

2

Sí exactamente, algunos servidores de pasar los parámetros por defecto de conexión al utilizar las funciones de MySQL antes de la conexión y deshacerse de un error, algunos otros servidores de trabajo simplemente donde quiera que coloque el código siempre es más seguro colocar mysql_real_escape_string() después de establecer la conexión mysql_connect()

Cuestiones relacionadas