我的数据库中有3行id
s 1,2和3。
我意识到如果你创建一个这样的语句:
$prepare=$database->prepare("select * from brand where id=?");
$prepare->execute($array);
echo $prepare->rowCount();
它将计算数组值不是确切的id但是使用;
关闭。例如
要计数的数组值适用于使用'row';
1 = 1
2 = 1
3 = 1
4 = 0
5 = 0
1;2 = 1
3;4 = 1
4;2 = 0
为什么像1;2
或3;4
这样的值适用于查询?
答案 0 :(得分:3)
合理的问题。这与MySQL在数字上下文中将字符串隐式转换为数字这一事实有关。它通过查看字符串中的前导数字并进行转换来进行转换。
所以,表达式:
where id = '1;2'
被解释为:
where id = 1
并且有一场比赛。
在id
可能为0
并且您拥有以下内容的表格中,这一点尤其邪恶:
where id = 'abc'
字符串以静默方式转换为整数0 - 并且可能存在匹配。