当field = 0时,mySQL返回所有行

我正在进行一些测试,当我查询一个表时,这是一个惊喜,查询SELECT * FROM表WHERE email = 0返回表中的所有行。

此表格中没有“0”值,并且使用常规电子邮件填充。

为什么会发生这种情况?这可能导致严重的安全问题。

有没有办法避免这个而不修改查询?

我在这里错过了什么吗?

谢谢。

这是因为它将电子邮件字段(我认为是一个varchar字段)转换为整数。任何没有有效整数的字段将等于0.您应该确保只将字符串字段与字符串值进行比较(与日期相对的日期相同)。查询应如下。

SELECT * FROM table WHERE email='0';
翻译自:https://stackoverflow.com/questions/7880936/mysql-returns-all-rows-when-field-0

转载注明原文:当field = 0时,mySQL返回所有行