Ver Mensaje Individual
  #5 (permalink)  
Antiguo 26/05/2015, 07:40
Avatar de gnzsoloyo
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, 2 meses
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)