假设我们在表'order'中有一条id = 1的记录。这个查询:
SELECT * FROM 'orders' WHERE id = 'abc1'
不会返回提到的记录。但是这个查询:
SELECT * FROM 'orders' WHERE id = '1abc'
将返回id = 1的记录。这是因为当MySQL将字符串转换为数字'abc1'变为0,但'1abc'变为1.有一种很好的方法可以使MySQL严格搜索具有来自查询的id的记录,即不返回id = 1的记录提到的案例?
答案 0 :(得分:6)
如何使用:
SELECT * FROM 'orders' WHERE id LIKE '1abc' COLLATE utf8_bin
甚至
SELECT * FROM 'orders' WHERE STRCMP(id, '1abc') = 0;
答案 1 :(得分:0)
我在提交SQL查询之前使用PHP处理了
$idTest = '1abc';
if (is_numeric($id){
$query = "SELECT * FROM 'orders' WHERE id = '$idTest'"
}
如果$idTest
有字符串,则会阻止提交查询