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.