【发布时间】:2017-08-25 14:43:31
【问题描述】:
我有一个带有自动递增 id 的表,并且只是在测试一些场景时偶然发现了一个问题,即 PDO 或 mysql 在数组中似乎将字符串转换为整数。有谁知道为什么?
如果我的查询如下:
$check = $db->prepare("SELECT * FROM tbl_test WHERE id=:id");
$check->execute(array(':id'=>1));
它检索 1 条记录 - 一切正常,但如果查询使用了一个字符串,无论是设计还是错误,如下所示:
$check = $db->prepare("SELECT * FROM tbl_test WHERE id=:id");
$check->execute(array(':id'=>'1 OR id > 0'));
它仍然检索 id=1 的记录。
肯定什么都找不到吗?我很感激我永远不应该允许第二种情况发生,但是为什么 PDO / mysql 将字符串转换为整数,它是如何做到的?
【问题讨论】: