Foros del Web » Programando para Internet » PHP »

Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in

Estas en el tema de Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in en el foro de PHP en Foros del Web. Me sale ese error en la lineas 12, 18 y 27... Alguien puede echarme una mano Código: $sql = mysql_query("SELECT userid FROM cms_homes_stickers WHERE id ...
  #1 (permalink)  
Antiguo 25/05/2013, 09:39
 
Fecha de Ingreso: diciembre-2012
Ubicación: Murcia
Mensajes: 329
Antigüedad: 11 años, 3 meses
Puntos: 4
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in

Me sale ese error en la lineas 12, 18 y 27... Alguien puede echarme una mano

Código:
$sql = mysql_query("SELECT userid FROM cms_homes_stickers WHERE id = '".$widgetid."' LIMIT 1");
Linea12: $rrow1 = mysql_fetch_assoc($sql);
Linea 18:

Código:
<?php while($rrow = mysql_fetch_assoc($sql)){ ?>
Linea 27:

Código:
$count = mysql_num_rows($sql);
  #2 (permalink)  
Antiguo 25/05/2013, 09:54
Avatar de Lobito14  
Fecha de Ingreso: abril-2010
Mensajes: 222
Antigüedad: 14 años
Puntos: 17
Respuesta: Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean g

http://www.forosdelweb.com/f18/hace-...-cosa-1053292/

????
  #3 (permalink)  
Antiguo 25/05/2013, 09:57
 
Fecha de Ingreso: diciembre-2012
Ubicación: Murcia
Mensajes: 329
Antigüedad: 11 años, 3 meses
Puntos: 4
Respuesta: Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean g

Cita:
Iniciado por Lobito14 Ver Mensaje
[url]http://www.forosdelweb.com/f18/hace-mostrar-cosa-1053292/[/url]

????
Eso es otra cosa :S
  #4 (permalink)  
Antiguo 25/05/2013, 10:07
Avatar de Lobito14  
Fecha de Ingreso: abril-2010
Mensajes: 222
Antigüedad: 14 años
Puntos: 17
Respuesta: Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean g

Pero ahí te he dicho que los números los pusieras sin comillas, y aquí los sigues mostrando con comillas en la consulta SQL, entonces no entiendo...

Un saludo.
  #5 (permalink)  
Antiguo 25/05/2013, 10:08
 
Fecha de Ingreso: diciembre-2012
Ubicación: Murcia
Mensajes: 329
Antigüedad: 11 años, 3 meses
Puntos: 4
Respuesta: Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean g

Cita:
Iniciado por Lobito14 Ver Mensaje
Pero ahí te he dicho que los números los pusieras sin comillas, y aquí los sigues mostrando con comillas en la consulta SQL, entonces no entiendo...

Un saludo.
Yo tampoco te entiendo... no soy muy experto en php lo siento
  #6 (permalink)  
Antiguo 25/05/2013, 11:46
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: Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean g

Los apóstrofos no deberían afectar al resultado, aunque pueden costar performance. MySQL realizaría en ese caso una conversión implícita.
El problema central es que MySQL no está devolviendo datos, por lo que hay que ver por qué no cumple con las condiciones, pero además, no estás validando que la consulta haya tenido éxito, antes de intentar obtener un registro.
ESO es una validación básica, de manual.

Yendo a la consulta, esta está así:
Código MySQL:
Ver original
  1. SELECT userid
  2. FROM cms_homes_stickers
  3. WHERE id = '".$widgetid."'
Es una consulta elemental. La única posibilidad de que falle es que no exista en la tabla el valor buscado, o que MySQL realice una conversión invalidante (por cadena y no por entero).
Pero eso sólo podría ocurrir si la conversión generara una cadena de texto que no fuese igual, y en este caso lo único que parece posible es que la cadena tuviese espacios vacíos.
Ahora bien, los espacios vacíos no generarían un FALSE en la condición, como te puede demostrar esta prueba:
Código MySQL:
Ver original
  1. mysql> SELECT 1 = ' 1';
  2. +----------+
  3. | 1 = ' 1' |
  4. +----------+
  5. |        1 |
  6. +----------+
  7. 1 row in set (0.08 sec)
  8.  
  9. mysql> SELECT 1 = ' 1  ';
  10. +------------+
  11. | 1 = ' 1  ' |
  12. +------------+
  13. |          1 |
  14. +------------+
  15. 1 row in set (0.00 sec)
Entonces sólo cabe la posibilidad de que la cadena esté.. vacía.
Código MySQL:
Ver original
  1. mysql> SELECT 1 = ' ';
  2. +---------+
  3. | 1 = ' ' |
  4. +---------+
  5. |       0 |
  6. +---------+
  7. 1 row in set (0.00 sec)
  8.  
  9. mysql> SELECT 1 = '';
  10. +--------+
  11. | 1 = '' |
  12. +--------+
  13. |      0 |
  14. +--------+
  15. 1 row in set (0.00 sec)

Así puesto, lo primero que debes verificar es si la variable usada es correcta o está vacía. Pero además, sería bueno que eliminaras los apóstrofos, porque la cadena vacía generaría en ese caso un efecto más claro: Un error de sintaxis, fácilmente detectable:
Código MySQL:
Ver original
  1. mysql> SELECT 1 = ;
  2. ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
Y eso es mucho mejor para resolver el misterio.

Valida, prueba y veamos.
__________________
¿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: boolean, expects, mysql, parameter, resource, select, sql, warning
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 02:24.