Cita:
Iniciado por yilloos 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$ssql = "SELECT * FROM usuario WHERE avatar_usuario = '$avatar'";
quedaría así:
Código SQL:
Ver originalSELECT * 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 originalSELECT * 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 originalSELECT * 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.