En MYSQL, FALSO
no es un valor booleano, es un número entero, más específicamente cero. De hecho, MySQL no tiene tipos de columnas booleanas (tiene BOOL
y BOOLEAN
pero son meros alias para TINYINT
). Entonces su consulta es un sinónimo de:
SELECT * FROM session WHERE token = 0
Desde token
es un VARCHAR, MySQL necesita convertir sus cadenas en número. Ejecute esta consulta y obtendrá una idea sobre las reglas:
SELECT
0 + "0001",
0 + "123abc",
0 + "abc123"
Como resultado, fa356333dd3ee8f1b18b8bf0a827e34c
convierte a 0
porque comienza con una letra, por lo tanto la coincidencia.