Ver Mensaje Individual
  #6 (permalink)  
Antiguo 25/05/2013, 11:46
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, 5 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)