I MYSQL, FALSK
er ikke en boolesk værdi, det er et heltal, mere specifikt nul. Faktisk har MySQL ikke booleske kolonnetyper (den har BOOL
og BOOLEAN
men de er blot aliaser for TINYINT
). Så din forespørgsel er et synonym for:
SELECT * FROM session WHERE token = 0
Siden token
er en VARCHAR, skal MySQL konvertere dine strenge til tal. Kør denne forespørgsel, og du får en idé om reglerne:
SELECT
0 + "0001",
0 + "123abc",
0 + "abc123"
Som et resultat, fa356333dd3ee8f1b18b8bf0a827e34c
kaster til 0
fordi det starter med et bogstav, altså matchen.