Em MYSQL, FALSE não é um valor booleano, é um inteiro, mais especificamente zero. Na verdade, o MySQL não possui tipos de colunas booleanas (tem
BOOL
e BOOLEAN
mas são meros aliases para TINYINT
). Portanto, sua consulta é sinônimo de:SELECT * FROM session WHERE token = 0
Desde
token
é um VARCHAR, o MySQL precisa converter suas strings em número. Execute esta consulta e você terá uma ideia sobre as regras:SELECT
0 + "0001",
0 + "123abc",
0 + "abc123"
Como resultado,
fa356333dd3ee8f1b18b8bf0a827e34c
converte para 0
porque começa com uma letra, daí a correspondência.