Foros del Web » Programando para Internet » PHP »

mysql_query me devuelve FALSE pero no tiene error aparente

Estas en el tema de mysql_query me devuelve FALSE pero no tiene error aparente en el foro de PHP en Foros del Web. Estuve bastante googleando la posible causa pero no encuentro explicación a lo que sucede, paso a explicar. El código es el siguiente. Código PHP: $q4  ...
  #1 (permalink)  
Antiguo 23/08/2010, 01:15
Rodre
Invitado
 
Mensajes: n/a
Puntos:
mysql_query me devuelve FALSE pero no tiene error aparente

Estuve bastante googleando la posible causa pero no encuentro explicación a lo que sucede, paso a explicar.

El código es el siguiente.

Código PHP:
$q4 = mysql_query(" INSERT INTO perfil (nombre, codigo) VALUES ('".$value."','".$key."') ");
$insertar_perfil = mysql_query($q4); 
if (!
$insertar_perfil) {
    echo 
"Error: " . mysql_error();
} else {
    echo 
"Insertado: " . $value;
} 
Lo que sucede al ejecutarse es que me devuelve el mensaje de error sigueinte:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '1' at line 1

Esto significa que evalúa a FALSE, pero la query se ejecuta con éxito. En la tabla los datos aparecen bien, y si hago la consulta directamente en el shell SQL de phpmyadmin no me dice que haya error alguno en la sintaxis.

Alguien sabe qué esta pasando?

Gracias
  #2 (permalink)  
Antiguo 23/08/2010, 01:32
 
Fecha de Ingreso: octubre-2009
Ubicación: En el ordenador
Mensajes: 504
Antigüedad: 17 años
Puntos: 10
Respuesta: mysql_query me devuelve FALSE pero no tiene error aparente

Lo que pasa es que haces el query, y después intentas hacer un query a ese query. Mira:

Código PHP:
$q4 = mysql_query(" INSERT INTO perfil (nombre, codigo) VALUES ('".$value."','".$key."') "); 
//$q4 es un query (por eso te lo inserta)
$insertar_perfil = mysql_query($q4); 
//$insertar_perfil es otro query, pero como no es una sentencia válida (es el resultado de otro query, pues da error
if (!$insertar_perfil) { 
    echo 
"Error: " . mysql_error(); 
} else { 
    echo 
"Insertado: " . $value; 
} 
Sería así:
Código PHP:
$q4 = mysql_query(" INSERT INTO perfil (nombre, codigo) VALUES ('".$value."','".$key."') "); 
if (!
$q4) { 
    echo 
"Error: " . mysql_error(); 
} else { 
    echo 
"Insertado: " . $value; 
} 
__________________
Buscando ideas para proyectos....

Esperando a tener 18 años....
  #3 (permalink)  
Antiguo 23/08/2010, 04:38
Avatar de geq
geq
 
Fecha de Ingreso: agosto-2006
Ubicación: Rosario
Mensajes: 655
Antigüedad: 20 años, 2 meses
Puntos: 22
Respuesta: mysql_query me devuelve FALSE pero no tiene error aparente

Hola,

mysql_query devuelve un identificador interno de mysql del query realizado para poder usarlo en otras funciones como mysql_result o mysql_fetch_array, no el éxito de la operación ni ningún valor utilizable. En realidad lo que deberías hacer es algo así:

Código PHP:
$q4 = mysql_query(" INSERT INTO perfil (nombre, codigo) VALUES ('".$value."','".$key."') "); 
$insertar_perfil = mysql_query($q4);  
if (
mysql_error()) { 
    echo 
"Error: " . mysql_error(); 
} else { 
    echo 
"Insertado: " . $value;
    
//mysql_insert_id() tendrá el id de la fila insertada si tienes un campo auto increment
} 
Saludos!
  #4 (permalink)  
Antiguo 23/08/2010, 05:52
 
Fecha de Ingreso: octubre-2009
Ubicación: En el ordenador
Mensajes: 504
Antigüedad: 17 años
Puntos: 10
Respuesta: mysql_query me devuelve FALSE pero no tiene error aparente

Cita:
Iniciado por geq Ver Mensaje
Hola,

mysql_query devuelve un identificador interno de mysql del query realizado para poder usarlo en otras funciones como mysql_result o mysql_fetch_array, no el éxito de la operación ni ningún valor utilizable. En realidad lo que deberías hacer es algo así:

Código PHP:
$q4 = mysql_query(" INSERT INTO perfil (nombre, codigo) VALUES ('".$value."','".$key."') "); 
$insertar_perfil = mysql_query($q4);  
if (
mysql_error()) { 
    echo 
"Error: " . mysql_error(); 
} else { 
    echo 
"Insertado: " . $value;
    
//mysql_insert_id() tendrá el id de la fila insertada si tienes un campo auto increment
} 
Saludos!

Eso de arriba tiene alguna cosa cambiada, pero el centro del problema es que se hace un query (que funciona bien) y después se intenta hacer un query de ese query (sí, es lo que he dicho más arriba, pero lo reitero porque así seguirá sin funcionar como debiera).
__________________
Buscando ideas para proyectos....

Esperando a tener 18 años....
  #5 (permalink)  
Antiguo 23/08/2010, 06:15
Avatar de geq
geq
 
Fecha de Ingreso: agosto-2006
Ubicación: Rosario
Mensajes: 655
Antigüedad: 20 años, 2 meses
Puntos: 22
Respuesta: mysql_query me devuelve FALSE pero no tiene error aparente

Perdón lo respondí medio dormido y se me pasó jejej así quedaría:

Código PHP:
$q4 = "INSERT INTO perfil (nombre, codigo) VALUES ('".$value."','".$key."')";
$insertar_perfil = mysql_query($q4);  
if (
mysql_error()) { 
    echo 
"Error: " . mysql_error(); 
} else { 
    echo 
"Insertado: " . $value;
    
//mysql_insert_id() tendrá el id de la fila insertada si tienes un campo auto increment
} 
O bien como dice markmb pero con mysql_error:

Código PHP:
$q4 = mysql_query("INSERT INTO perfil (nombre, codigo) VALUES ('".$value."','".$key."')");
if (
mysql_error()) { 
    echo 
"Error: " . mysql_error(); 
} else { 
    echo 
"Insertado: " . $value;
    
//mysql_insert_id() tendrá el id de la fila insertada si tienes un campo auto increment
} 
Saludos!
  #6 (permalink)  
Antiguo 23/08/2010, 11:14
Rodre
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: mysql_query me devuelve FALSE pero no tiene error aparente

Evidentemente el más dormido era yo, gracias a todos por las respuestas!

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:05.