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í:
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 = ' 1' |
+----------+
| 1 |
+----------+
+------------+
| 1 = ' 1 ' |
+------------+
| 1 |
+------------+
Entonces sólo cabe la posibilidad de que la cadena esté.. vacía.
Código MySQL:
Ver original+---------+
| 1 = ' ' |
+---------+
| 0 |
+---------+
+--------+
| 1 = '' |
+--------+
| 0 |
+--------+
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 originalERROR
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.