Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Error en la consulta de una base de datos

Estas en el tema de Error en la consulta de una base de datos en el foro de PHP en Foros del Web. hola muy buenas a todos gracias de antemano por la ayuda que estás dando sobre todo a los novatos como yo. mi error está saltando ...
  #1 (permalink)  
Antiguo 11/12/2013, 12:27
 
Fecha de Ingreso: enero-2008
Mensajes: 88
Antigüedad: 16 años, 2 meses
Puntos: 0
Error en la consulta de una base de datos

hola muy buenas a todos
gracias de antemano por la ayuda que estás dando sobre todo a los novatos como yo.
mi error está saltando porque no puedo visualizar el contenido de una consulta porque en principio cuando imprimo el resultado de la consulta me sale :
Resource id #3.

les adjunto una copia de lo que tengo hecho:
Código PHP:
$id=$_GET['id']; //cuando visualizo el id se visualiza correctamente.
$result = @mysql_query("select * from products where id='$id'");
//cuando hago el echo $result me sale  Resource id #3
$r mysql_fetch_assoc($result);

echo 
$r['titulo'];

//no se me imprime nada o sea no sé que es lo que estoy haciendo mal 
o sea no sé que es lo que estoy haciendo mal?

asi estaría agradecido si me podéis decir que es lo que estoy haciendo mal

muchisima gracias de antemano
sal2
  #2 (permalink)  
Antiguo 11/12/2013, 12:34
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Error en la consulta de una base de datos

1. El #resource es correcto, consulta el manual para que entiendas el por qué de dicho resultado

2. Jamás deberías usar @ para ocultar posibles errores, eso definitivamente te impide ver si ocurre algo mal

3. ¿Qué estás haciendo para depurar si tienes un error? No veo como esperas saber la razón viendo al monitor todo el día

4. Intenta, también, depurar con var_dump() lo que trae la variable $r o de otra forma tampoco vas a saber si tienes algún dato
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 11/12/2013, 13:45
 
Fecha de Ingreso: enero-2008
Mensajes: 88
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: Error en la consulta de una base de datos

hola gracias maestro por tu aclaración
estoy delante la pantalla durante todo el dia por eso recurre el foro para que me busco soluciones al imprimir var_dump($result) me sale:resource(4, mysql result)
asi que no se como resolverlo.

gracias
  #4 (permalink)  
Antiguo 11/12/2013, 14:14
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: Error en la consulta de una base de datos

No hay error real de MySQL, sino que no estás verificando si te devuelve datos.
Código PHP:
$id=$_GET['id']; 
$result mysql_query("select * from products where id='$id'");
if(!
$result)
{echo 
"Error: ".mysql_error();}
else{
    if(
mysql_num_rows($result)==0)
       {echo 
"No se obtuvieron datos.";}
    else
       {
$r mysql_fetch_assoc($result);
        echo 
$r['titulo'];} 
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 11/12/2013, 14:18
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Error en la consulta de una base de datos

Cita:
Iniciado por chouki Ver Mensaje
[...] al imprimir var_dump($result) me sale:resource [...]
¿Cuando he dicho que uses var_dump() sobre $result eh?

Cita:
Iniciado por pateketrueke Ver Mensaje
4. Intenta, también, depurar con var_dump() lo que trae la variable $r o de otra forma tampoco vas a saber si tienes algún dato
Aprende a leer bien las respuestas.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #6 (permalink)  
Antiguo 11/12/2013, 14:25
 
Fecha de Ingreso: enero-2008
Mensajes: 88
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: Error en la consulta de una base de datos

hola gnzsoloyo
gracias por tu respuesta me sale de que no hay datos lo que no entiendo la misma consulta la ejecuto en phpmyadmin y me devuelve resultado pero en el script que tengo de php me sale de que no hay datos???? no entiendo

Última edición por chouki; 11/12/2013 a las 14:35
  #7 (permalink)  
Antiguo 11/12/2013, 14:38
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: Error en la consulta de una base de datos

Bueno, en ese caso, el tema es que no hay datos, y no hay muchas otras vueltas.
Veamos, por lo pronto verifiquemos lo que tiene la query. Haz lo siquiente:
Código PHP:
$id=$_GET['id']; 
$qry "select * from products where id='$id'";
echo 
$qry
Captura lo que muestra eso en pantalla, postalo aquí, así vemos bien lo que tienes, y luego ejecútalo por medio del phpMyadmin en la misma base de datos donde te conectas con ese script.
__________________
¿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 11/12/2013, 14:46
 
Fecha de Ingreso: enero-2008
Mensajes: 88
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: Error en la consulta de una base de datos

muxas gracias por tu aportacion y por tu paciencia
es que no entiendo que es lo que estoy haciendo mal a la hora de ejecutar el resultado de la query:
Código PHP:
Ver original
  1. $id=$_GET['id'];
  2. $qry = "select * from products where id='$id'";
  3. echo $qry;
me sale Resource id #3 pero a la hora de ejecutar en phpmyadmin me sale el resultado de la consulta correctamente: o sea toda la informción que tengo la tabla products: author, title catid ,price, description
muxas gracias por tu ayuda pero es que no veo que es lo que está fallando en script para que devuevle resultados en phpmyadmin y en script no devuelve nada
  #9 (permalink)  
Antiguo 11/12/2013, 14:53
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: Error en la consulta de una base de datos

Cita:
Resource id #3
Esto no es lo que sale del echo que YO te estoy indicando.
Ese echo sólo debería mostrar la consula, tal como:
Código SQL:
Ver original
  1. SELECT * FROM products WHERE id='12'
, supontiendo que "12" fuese el valor ingresado al GET.
Es obvioa ahora para mi también que no estás leyendo lo que se te propone.

Vuelve a intentarlo, pero hazlo bien esta vez.

Y haznos el favor de postear el código completo del script, y no una parte de él. Me gustaría saber si realmente es lo que dices, o estás omitiendo partes importantes.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #10 (permalink)  
Antiguo 11/12/2013, 15:04
Avatar de xSkArx  
Fecha de Ingreso: marzo-2008
Ubicación: Chile
Mensajes: 945
Antigüedad: 16 años, 1 mes
Puntos: 96
Respuesta: Error en la consulta de una base de datos

Te doy una pista $r['titulo'] es un array
__________________
Busca, lee y practica todo lo que puedas.
Usa siempre el buscador antes de postear.
Si posteas código, utiliza el HIGHLIGHT correcto.
  #11 (permalink)  
Antiguo 11/12/2013, 17:22
 
Fecha de Ingreso: enero-2008
Mensajes: 88
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: Error en la consulta de una base de datos

hola gnzsoloyo
no es de que no estoy leyendo tu respuestas sino que no me enteré muy bien de lo que me comentaste si le adjunto lo que veo en query:
select * from products where id=0-67-198;

pero en principio lo que hago tomo el valor del id por el get y luego este parametro lo paso al query.
  #12 (permalink)  
Antiguo 11/12/2013, 17:47
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: Error en la consulta de una base de datos

Bueno, allí tienes un error, bien evidente...
Mira, lo que MySQL recibe es esto:
Código MySQL:
Ver original
  1. select * from products where id=0-67-198;
Ese último valor que se ve, implica que se realice un cálculo aritmético como este:
Cita:
0-67-198
Es decir, que la consulta quedaría así:
Código MySQL:
Ver original
  1. select * from products where id= -267;
Eso, como parece evidente, es imposible, al menos si los ID son numéricos y positivos...
Por otro lado, no creo que sea eso lo que realmente estaría mostrando la consulta. Para mí que lo estás inventando, porque faltan los apóstrofos que rodean la variable en tu ejemplo:
Código PHP:
$qry "select * from products where id='$id'"
por lo que si $id contuviese "0-67-187", en realidad la query debería haber quedado:
Código SQL:
Ver original
  1. SELECT * FROM products WHERE id='0-67-198'
De todos modos, si "ID" es numérico, MySQL habría hecho una conversión implícita y tendríamos la que te dije:
Código MySQL:
Ver original
  1. select * from products where id= -267;

Lo que quiero resaltar es que no estás haciendo lo que dije: No ejecutaste el script como te indiqué, y no estás copiando la salida que te sugerí.
Por cierto, tampoco estás posteando todo el script, como te pedí...

En resumen: Si $_GET['id'] contiene "0-67-198" como dices, entonces estás poniendo basura en la consulta, y jamás te devolverá resultados.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #13 (permalink)  
Antiguo 11/12/2013, 18:19
 
Fecha de Ingreso: enero-2008
Mensajes: 88
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: Error en la consulta de una base de datos

hola maestro
gracias por tu aportación pero
en principio no estoy inventando ningún dato decir te estoy copiando el valor tal como lo tengo volví a ejecutarlo y los apostrofos que has insistido que deberían aparecer que gracias por fijar en ello sale solamente le primer ' y el segundo no me sale (o sea el que cierra no me sale ).
le adjunto un copia de mi scrpt haber si te puedes localizar que es lo está fallando porque si los - que aparecen en el id eran mal tampoco se ejecutarían en phpmyadmin.
Código PHP:
$id=$_GET['id'];

   if (!
$id || $id=="")
   {
      echo 
"<script language='javascript'>;";
      echo 
" alert('Por Favor seleccione un id');";
      echo 
"history.back();";
      echo 
"</script>;";
    }
     
//establecer la conexion con la bd
    
$conn mysql_pconnect("localhost""""");
    if (!
$conn)
      die( 
'Error'mysql_error() );
    
mysql_select_db("articulos",$conn) or die( 'Error'mysql_error());
    
$result =mysql_query("select * from products where id='$id'");
   if(!
$result)
   {
        echo 
"Error: ".mysql_error();
   }
   else
   {
     if(
mysql_num_rows($result)==0)
       {echo 
"No se obtuvieron datos.";}
    else
       {
         
$r mysql_fetch_assoc($result);
         echo 
$r['titulo'];
        echo 
'<td><img src="'.$r["imagen"].'"height="100" width="100"/></td>';
        echo 
"<td><ul>";
        echo 
"<li><b>Autor:</b> ";
        echo 
$r["author"];
        echo 
"<li><b>Nuestro Precio:</b> ";
       echo 
number_format($r["price"], 2);
       echo 
"<li><b>Descripción:</b> ";
       echo 
$r["description"];
       echo 
"</ul></td></tr></table>";
      echo 
"</table><tr>";
      echo 
"<hr>";
   }

  #14 (permalink)  
Antiguo 11/12/2013, 18:26
 
Fecha de Ingreso: enero-2008
Mensajes: 88
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: Error en la consulta de una base de datos

holaa

quité los - que parecen en el medio en un campo de la tabla pero nada cambia asi que la opción de que los guillones que están en medio del id que puede dar problemas está descartada

gracias por vuestra colaboración
  #15 (permalink)  
Antiguo 11/12/2013, 18:37
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: Error en la consulta de una base de datos

Cita:
Iniciado por chouki Ver Mensaje
holaa

quité los - que parecen en el medio en un campo de la tabla pero nada cambia asi que la opción de que los guillones que están en medio del id que puede dar problemas está descartada

gracias por vuestra colaboración
Déjame entender esto: ¿El campo "id" de la tabla "products", realmente contiene valores como "0-67-198"?
¿Es así?

Por otro lado, ¿en qué momento se carga $_GET['id'] con esos valores? Porque en este script sólo veo que ya viene de afuera, pero no sé cómo es que contiene eso.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #16 (permalink)  
Antiguo 11/12/2013, 18:56
 
Fecha de Ingreso: enero-2008
Mensajes: 88
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: Error en la consulta de una base de datos

hola maestro
asi es en principio este id viene de fuera porque a la hora de seleccionar un producto le mando el id en un enlace por eso lo recogo con el get y luego lo paso la consulta para mostrar los detalles de este producto.
  #17 (permalink)  
Antiguo 11/12/2013, 19:05
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: Error en la consulta de una base de datos

Sigo sin tener claro si en la tabla de la base tienes valores numéricos, o cosas como "1-34-197".

Me explico un poco más claro:
Si tienes valores numéricos simples, entonces los datos del GET están llegando mal, porque para esa consulta debe venir un único valor, no varios, y menos aún separados por guiones.

En el caso de ser ID un campo numérico, y querer consultar por varios valores, pero GET aporta una cadena, primero debes transformar "0-67-198" en "0,67, 198", con comas, y luego puedes usar dos formas:
- Si quieres usar sólo números, la query deberá ser:
Código SQL:
Ver original
  1. SELECT * FROM products WHERE id IN($id)
Donde el resultado será
Código SQL:
Ver original
  1. SELECT * FROM products WHERE id IN(0,67, 198)

- Si quieres dejarlo como cadena, debes usar funciones:
Código SQL:
Ver original
  1. SELECT * FROM products WHERE FIND_IN_SET('$id')
donde el resultado será:
Código SQL:
Ver original
  1. SELECT * FROM products WHERE FIND_IN_SET('0,67, 198')

Ambos traerán resultados en ese caso.

Ahora bien, si el campo de la tabla en base fuese VARCHAR, y tuviese valores como "0-67-198", eso estaría MAL. Tendrías un serio defecto de diseño de datos, porque no deben ponerse múltiples valores de datos en un mismo campo de un único registro.
Eso requeriría rediseñar la tabla y las relaciones de la base.

Así que ¿cuál es realmente el contenido en un registro cualquiera de ese campo?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #18 (permalink)  
Antiguo 11/12/2013, 19:17
 
Fecha de Ingreso: enero-2008
Mensajes: 88
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: Error en la consulta de una base de datos

vale
en principio el campo lo tengo con un valor con un guión intermedio pero por si acaso hace falta lo cambio con un valor numerico sin guiones pero el problema va a seguir igual porque va fallar la consulta.
  #19 (permalink)  
Antiguo 12/12/2013, 04:52
 
Fecha de Ingreso: enero-2008
Mensajes: 88
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: Error en la consulta de una base de datos

hola gnzsoloyo
instale un depurador del firebug para ver que es lo que está fallando y en principio
mi enlace donde llamo al id aparece lo siguiente :
Código PHP:
<a href="show_product.php?id=0672315092<td"
o sea hay una etiqueta del td que no sé por dónde se metió que está impidiendo la consulta del query
asi que seguiré investigando para ver si se arregla eso

muxas gracias por todo

Etiquetas: mysql, select
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 16:19.