Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Consulta PHP sencilla da error pero en PHPmyadmin funciona

Estas en el tema de Consulta PHP sencilla da error pero en PHPmyadmin funciona en el foro de PHP en Foros del Web. Buenas, llevo un tiempo sin tocar PHP y puede que me esté faltando algo, pero me estoy volviendo loco. Estoy intentando hacer un simple insert ...
  #1 (permalink)  
Antiguo 26/05/2015, 04:20
 
Fecha de Ingreso: mayo-2015
Mensajes: 5
Antigüedad: 9 años, 5 meses
Puntos: 0
Consulta PHP sencilla da error pero en PHPmyadmin funciona

Buenas, llevo un tiempo sin tocar PHP y puede que me esté faltando algo, pero me estoy volviendo loco. Estoy intentando hacer un simple insert en una tabla a través de una petición Ajax, nada del otro mundo. Pero por algún extraño motivo esta me da "Error en la consulta", y no se que hacer, porque al copiar la sentencia y ejecutarla en el SQL de PHPmyadmin, funciona.
A ver si veis algo raro, u os suena este problema. Es que ya no se que hacer. Gracias por adelantado y saludos.

______________________________

Aquí el PHP:

<?php

@$dni = $_GET['dni'];
@$nombre = $_GET['nombre'];
@$direccion = $_GET['direccion'];
@$usuario = $_GET['usuario'];
@$contrasena = $_GET['contrasena'];
@$mail = $_GET['mail'];

$conexion = mysql_connect("localhost","root","") or die("Error al conectar");
$db = mysql_select_db("libros",$conexion) or die("Error al seleccionar DB");

$sql = "insert into clientes(dni, nombre, direccion, usuario, password, email)
values ('".$dni."','".$nombre."','".$direccion."',".$usua rio.",'".$contrasena."','".$mail."')";

mysql_query($sql,$conexion) or die("Error en la consulta: ".$sql);

?>

___________________________

Y un ejempo de lo que recibo, que funciona perfectamente si lo ejecuto en el SQL de phpmyadmin:

insert into clientes(dni, nombre, direccion, usuario, password, email)
values ('k','k','k','k','k','[email protected]')
  #2 (permalink)  
Antiguo 26/05/2015, 04:56
Avatar de jpint  
Fecha de Ingreso: junio-2012
Ubicación: Ciudad Real - España
Mensajes: 97
Antigüedad: 12 años, 5 meses
Puntos: 12
Respuesta: Consulta PHP sencilla da error pero en PHPmyadmin funciona

Se te ha colado un espacio en la insert --> $usua rio
  #3 (permalink)  
Antiguo 26/05/2015, 04:59
 
Fecha de Ingreso: mayo-2015
Mensajes: 5
Antigüedad: 9 años, 5 meses
Puntos: 0
Respuesta: Consulta PHP sencilla da error pero en PHPmyadmin funciona

Cita:
Iniciado por jpint Ver Mensaje
Se te ha colado un espacio en la insert --> $usua rio
Cierto, pero ha sido al ponerlo aquí. Gracias de todas formas.
Recalco que funciona la consulta perfectamente en el phpmyadmin, pero da error en el programa.
  #4 (permalink)  
Antiguo 26/05/2015, 05:01
 
Fecha de Ingreso: mayo-2015
Mensajes: 5
Antigüedad: 9 años, 5 meses
Puntos: 0
Respuesta: Consulta PHP sencilla da error pero en PHPmyadmin funciona

Al editar el post, sale sin espacio, pone el espacio al visualizarlo, no tengo ni idea de por qué xd El caso es que ese no es el error.
  #5 (permalink)  
Antiguo 26/05/2015, 07:40
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Consulta PHP sencilla da error pero en PHPmyadmin funciona

TRes consejos:
1) NUNCA PONGAS ese "@" en las líneas. Oculta cualquier error o warning, escondiendo información vital en la etapa de desarrollo. Es una pésima costumbre, además de innecesaria.
Si te molestan los mensajes de error y warning, es poque aún mo tienes práctica en que esos mensajes son total y absolutamente necesarios para los programadores. Es la única forma de saber que se ha codificiado MAL algo.

2) Verifica siempre que las variables contienen lo que supones que contienen. Que algo esté bien escrito no implica que realmente esté funcionando bien. Son dos cosas diferentes.
El 99% de los fallos en las sentencias SQL creadas en PHP se originan en datos que no existen, o que se reciben mal.

3) Ten mucho cuidado con la construcción de una sentencia SQL. La sentencia debe estar bien creada para quel la base de datos la acepte. PHP no entiende SQL (y viceversa), por lo que jamás podrás analizar su corrección desde PHP.

En tu query hay un error básico: el campo usuario se supone que es un VARCHAR, pero no estás poniendo el resutlado de $usuario entre apostrofos, por lo que MySQL asumirá que el valor recibido es el nombre de una columna.

Supongamos que recibe esto:
Código SQL:
Ver original
  1. INSERT INTO clientes(dni, nombre, direccion, usuario, password, email)
  2. VALUES ('111111','alberto Fernandez','Calle X 1234 ', alberfer, 'loqueseaPWD','[email protected]')
Está todo perfecto... excepto el usuario. Todo lo que no se pone entre apostrofos la base lo asume como nombre de un objeto de BBDD, sea columna, tabla, base, trigger, procedure, etc. Si no es nada de eso, entonces se generará un error de ejecución.
Pero como para colmo no estás verificando QUÉ error devuelve, no hay modo de que lo sepas.
Al menos deberías usar mysql_error() para saberlo.

Código PHP:
<?php

$dni 
$_GET['dni'];
$nombre $_GET['nombre'];
$direccion $_GET['direccion'];
$usuario $_GET['usuario'];
$contrasena $_GET['contrasena'];
$mail $_GET['mail'];

$conexion mysql_connect("localhost","root","") or die("Error al conectar");
$db mysql_select_db("libros",$conexion) or die("Error al seleccionar DB");

$sql "insert into clientes(dni, nombre, direccion, usuario, password, email)
values ('"
.$dni."','".$nombre."','".$direccion."','".$usuario."','".$contrasena."','".$mail."')";

mysql_query($sql,$conexion) or die("Error en la consulta: ".mysql_error());

?>
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 26/05/2015, 07:52
 
Fecha de Ingreso: mayo-2015
Mensajes: 5
Antigüedad: 9 años, 5 meses
Puntos: 0
Respuesta: Consulta PHP sencilla da error pero en PHPmyadmin funciona

Lo primero, mil gracias por la respuesta.
Tienes razón en lo de las @, los ponía porque me monstraban warnings, y tenía que enseñar el proyecto a medias y los quité. Estaba intentando detectar el error sacándola cadena de sql a través de Ajax, pero como me funcionaba me estaba volviendo loco.
Simplemente era lo de usuario, no me explico no haberlo visto con la de veces que he mirado, en fin, muchísimas gracias.
  #7 (permalink)  
Antiguo 26/05/2015, 08:34
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Consulta PHP sencilla da error pero en PHPmyadmin funciona

Una sugerencia para los Warnings, es que trates de poner todo en bloques try/catch de PHP, de modo que las expepciones y warnings puedan ser administrados y no te ensucien las respuestas.

http://php.net/manual/es/language.exceptions.php

También peudes manejar el nivel de errores notificados, lo que a veces es un poco riesgoso, pero puede ayudarte a mostrar las pruebas. Eso, simepre que recuerdes reactivarlo todo para cuando estás en plena tarea de desarrollo.

http://php.net/manual/es/function.error-reporting.php
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #8 (permalink)  
Antiguo 26/05/2015, 08:39
 
Fecha de Ingreso: mayo-2015
Mensajes: 5
Antigüedad: 9 años, 5 meses
Puntos: 0
Respuesta: Consulta PHP sencilla da error pero en PHPmyadmin funciona

Tomo nota de todo lo que me dices, de nuevo muchas gracias. Un saludo!

Etiquetas: mysql, phpmyadmin, select, sencilla, sql, tabla
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 09:36.