Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

como seria la consulta correcta?

Estas en el tema de como seria la consulta correcta? en el foro de Mysql en Foros del Web. esta es la consulta que hice: Código PHP: $destinatario = $_SESSION [ 'k_username' ]; $connect = mysql_connect ( $host , $user , $pass ); mysql_select_db ...
  #1 (permalink)  
Antiguo 11/12/2011, 11:16
 
Fecha de Ingreso: diciembre-2011
Ubicación: coruña
Mensajes: 36
Antigüedad: 12 años, 4 meses
Puntos: 1
Pregunta como seria la consulta correcta?

esta es la consulta que hice:

Código PHP:
$destinatario=$_SESSION['k_username'];
$connect=mysql_connect($host,$user,$pass);
mysql_select_db('logueo',$connect); 
$consulta mysql_query('SELECT * FROM mensajes WHERE destinatario="$destinatario" ORDER BY fecha DESC',$connect); 
no me arroja ningun error simplemente no me captura ningun registro.
se que el fallo esta en la consulta sql pero no se como resoloverlo

como seria la forma correta.
  #2 (permalink)  
Antiguo 11/12/2011, 12:10
Avatar de 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: como seria la consulta correcta?

Ten cuidado con las comillas (") y los apóstrofes (') cuando usas PHP y SQL al mismo tiempo.
Para poder crear consultas donde usas valores de strings, no puedes usar apóstrofes cuando creas la consulta en el PHP, tienes que usar comillas:
Código PHP:
$consulta mysql_query("SELECT * FROM mensajes WHERE destinatario='$destinatario' ORDER BY fecha DESC"$connect); 
Como puedes ver, la cadena, dentro del SQL, debe quedar entre apóstrofes, no entre comillas, porque las comillas se usan en MySQL para otra cosa. Al poner la cadena como lo hacías, generabas un error de consulta no sintáctico, por lo que no lo podías detectar.
Muy probablemente el error de MySQL dijese algo como: "Columna 'xxxxxx' desconocida en la cláusula WHERE", porque las comillas se usan para lo mismo que el acento inverso: encierran nombres de bases, tablas o columnas, y no texto.
Una posibilidad es que uses esta forma:
Código PHP:
$consulta mysql_query('SELECT * FROM mensajes WHERE destinatario=''$destinatario'' ORDER BY fecha DESC'$connect); 
o bien:
Código PHP:
$consulta mysql_query('SELECT * FROM mensajes WHERE destinatario=\'$destinatario\' ORDER BY fecha DESC'$connect); 
Ambas son igualmente válidas, pero yo prefiero la primera de todas.
Ten en cuenta que cuando mezclas dos lenguajes dentro del mismo script, debes respetar las reglas de cada uno dentro de su contexto de ejecución, y el del SQL no es el ambiente de PHP sino el de MySQL.
En otras palabras: La sentencia SQL debe estar correctamente creada para MySQL.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: sql
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 21:45.