我正在做一些测试,当我查询一个表时,这是一个惊喜,查询SELECT * FROM table WHERE email=0返回了表中的所有行。
SELECT * FROM table WHERE email=0
该表没有‘0’值,并且使用常规电子邮件填充。
为什么会这样?这会导致严重的安全问题。
有没有一种方法可以避免这种情况而无需修改查询?
我在这里想念什么吗?
谢谢。
这是因为它将电子邮件字段(我认为是varchar字段)转换为整数。任何没有有效整数的字段都将等于0。您应确保仅将字符串字段与字符串值进行比较(日期比较,日期比较)。查询应如下。
SELECT * FROM table WHERE email='0';