Ver Mensaje Individual
  #16 (permalink)  
Antiguo 11/07/2012, 10:48
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: 16 años, 4 meses
Puntos: 2658
Respuesta: Error en sentencia SELECT

Cita:
Iniciado por yilloos Ver Mensaje
Lo pude arreglar colocando la variable $avatar en comillas simples dentro de la consulta, asi:

$ssql = "SELECT * FROM usuario WHERE avatar_usuario = '$avatar'";

Pero se va por el else del if y me dice que no puede capturar la variable, creo que el problema esta en la sintaxis de la sentencia por que si le doy un valor que se encuentre escrito en la BD, asi:

$ssql = "SELECT * FROM usuario WHERE avatar_usuario = 'nombre'";

todo corre bien, entonces no se que hacer....
La sintaxis de la sentencia es perfecta.
Lo que tienes que tener en cuenta es que SQL no es PHP, por lo que cuando una cadena de texto es comparada contra un campo VARCHAR de la tabla, debe siempre estar entre apóstrofos ('). No alcanza con poner la variable de PHP embebida en el SQL, eso lo que hace es agregar el valor de la variable a la cadena de la consulta, pero si no le pones los apóstrofos, si $avatar contiene "nombre", esto:
Código PHP:
Ver original
  1. $ssql = "SELECT * FROM usuario WHERE avatar_usuario = '$avatar'";
quedaría así:

Código SQL:
Ver original
  1. SELECT * FROM usuario WHERE avatar_usuario = nombre;
y eso para MySQL es que hay una columna cuyo nombre es "nombre", y no la cadena de texto "nombre".

Código SQL:
Ver original
  1. SELECT * FROM usuario WHERE avatar_usuario = 'nombre';
Si eso es lo que está pasando, MySQL te debe estar devolviendo un error no sintáctico.
¿Estás capturando y mostrando los errores devueltos por MySQL? No.
Es importante hacerlo, porque eso permite diferenciar entre los errores con la base de los errores de PHP.

Nota: Poner los apóstrofos hará que no se pueda determinar si la variable está llegando con datos. Si la variable $avatar está vacía, el resultado será una consulta así:
Código SQL:
Ver original
  1. SELECT * FROM usuario WHERE avatar_usuario = '';
Lo que no es un error de sintaxis, pero no te devolverá datos.
Eso es un error de programación en PHP y no un error de MySQL.

Antes que nada tienes que asegurarte fehacientemente que la variable contiene datos (longitud de caracteres mayor a cero), y no si está incializiada. El isset es insuficiente porque puede darte TRUE si contiene un caracter vacío.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 11/07/2012 a las 10:54