小编典典

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

mysql

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

该表没有‘0’值,并且使用常规电子邮件填充。

为什么会这样?这会导致严重的安全问题。

有没有一种方法可以避免这种情况而无需修改查询?

我在这里想念什么吗?

谢谢。


阅读 270

收藏
2020-05-17

共1个答案

小编典典

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

SELECT * FROM table WHERE email='0';
2020-05-17