我很困惑地看到我从mysql获取以下查询的结果。
SELECT id, email, full_name FROM user WHERE `email` = 0 AND `password` = 0
它给了我这个结果
怎么可能呢?当我将这些零括在引号中时,它没有给出任何结果。是什么原因?
顺便说一下,返回的行就在数据库中,但它在电子邮件或密码中肯定没有。
列类型为:email
为VARCHAR(100)
,密码为CHAR(32)
答案 0 :(得分:1)
您的字段中确实包含e
,m
,a
等等吗?由于您要比较string = integer
,mysql会将字符串转换为整数:
(int)'email' -> 0
当然
0 = 0 -> true
如果您的字段是(例如)9email
,则(int)'9email' -> 9
和0 = 9
将为false。 'email' = '0'
也是如此。这两个字符串不相等,所以行永远不会匹配。