PDO MySQL接受非特定值

时间:2016-03-16 23:44:56

标签: php mysql pdo

我的数据库中有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;23;4这样的值适用于查询?

1 个答案:

答案 0 :(得分:3)

合理的问题。这与MySQL在数字上下文中将字符串隐式转换为数字这一事实有关。它通过查看字符串中的前导数字并进行转换来进行转换。

所以,表达式:

where id = '1;2'

被解释为:

where id = 1

并且有一场比赛。

id可能为0并且您拥有以下内容的表格中,这一点尤其邪恶:

where id = 'abc'

字符串以静默方式转换为整数0 - 并且可能存在匹配。