这已经被窃听了很长时间,我仍然无法弄清楚我做错了什么。在代码中,我想选择几个用逗号分隔的用户。该字符串将始终合法有效。
在第一个示例中,我想使用的示例使用 bindParam 将值分配给$postId
SQL 查询。我一直在使用bindParam()
很多其他电话,但在这种特定情况下,它失败了。
$postId = "1,2,3";
$stm = $this->db->prepare('SELECT * FROM posts WHERE find_in_set(userId, "?") ORDER BY id DESC');
$stm->bindParam(1, $postId, PDO::PARAM_STR);
$stm->setFetchMode(PDO::FETCH_ASSOC);
$stm->execute();
$results = $stm->fetchAll();
return print_r($results,true);
此代码返回:
array (
)
在我真的不想使用的其他代码中,我只是将$postId
right 的值传递给 sql 查询。
$stm = $this->db->prepare('SELECT * FROM posts WHERE find_in_set(userId, "'.$postId.'") ORDER BY id DESC');
$stm->setFetchMode(PDO::FETCH_ASSOC);
$stm->execute();
$results = $stm->fetchAll();
return print_r($results,true);
此代码返回它应该检索的所有行。
我的问题是;具体问题是什么,我怎样才能避免再次这样做?