Trong MYSQL, FALSE
không phải là một giá trị boolean, nó là một số nguyên, cụ thể hơn là số không. Trên thực tế, MySQL không có kiểu cột boolean (nó có BOOL
và BOOLEAN
nhưng chúng chỉ là bí danh của TINYINT
). Vì vậy, truy vấn của bạn là từ đồng nghĩa với:
SELECT * FROM session WHERE token = 0
Kể từ khi token
là một VARCHAR, MySQL cần chuyển đổi chuỗi của bạn thành số. Chạy truy vấn này và bạn sẽ có ý tưởng về các quy tắc:
SELECT
0 + "0001",
0 + "123abc",
0 + "abc123"
Do đó, fa356333dd3ee8f1b18b8bf0a827e34c
chuyển thành 0
bởi vì nó bắt đầu bằng một chữ cái, do đó phù hợp.