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: 14 años, 7 meses
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: 17 años, 8 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: 14 años, 7 meses
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: 17 años, 8 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 02:34.