假设有表 tb1
ID | name|
----+--------+
1 |2toon|
2 |1*xyz|
语句1:
select * from tb1 where ID='2toon' or name ='2toon';
mysql服务器在某模式下,可以执行这条句,就成功返回两条记录,原因在于 ID=‘2toon’ 加了单引号,mysql解释为 ID=2.
语句2
select * from tb1 where ID=2toon or name ='2toon';
此语句执行不了。
因此,想要得准确的查询结果,对int的字段一定要做判断与转类型。
转类型还可以防止SQL注入。