Dans MYSQL, FAUX
n'est pas une valeur booléenne, c'est un entier, plus précisément zéro. En fait, MySQL n'a pas de types de colonnes booléennes (il a BOOL
et BOOLEAN
mais ce ne sont que des alias pour TINYINT
). Votre requête est donc synonyme de :
SELECT * FROM session WHERE token = 0
Depuis token
est un VARCHAR, MySQL doit convertir vos chaînes en nombre. Exécutez cette requête et vous aurez une idée des règles :
SELECT
0 + "0001",
0 + "123abc",
0 + "abc123"
En conséquence, fa356333dd3ee8f1b18b8bf0a827e34c
convertit en 0
car il commence par une lettre, donc la correspondance.