在 MYSQL 中使用 IN 会导致 PHP 中的变量出现问题
Posted
技术标签:
【中文标题】在 MYSQL 中使用 IN 会导致 PHP 中的变量出现问题【英文标题】:Using IN in MYSQL cause issues with variables in PHP 【发布时间】:2016-05-14 14:58:27 【问题描述】:在网站上工作时,我发现 PDO 存在一个相当奇怪的问题。以下代码仅选择用户 1 发布的帖子,而不选择用户 3。
$sql = "SELECT postid FROM posts WHERE userid IN (:friends)";
$pdo->prepare($sql);
$pdo->execute(array(':friends' => '1, 2, 3'));
但是,以下代码从所有三个中选择帖子:
$sql = "SELECT postid FROM posts WHERE userid IN (1, 2, 3)";
$pdo->prepare($sql);
$pdo->execute();
为什么会这样,我该怎么做才能让第一个工作像第二个一样?
【问题讨论】:
有些东西不见了 -selects posts made by user 1, not or 3
。你的意思是1, not 2 or 3
?
php PDO prepared statement IN() array的可能重复
PDO binding values for mysql IN statement的可能重复
【参考方案1】:
你必须这样写查询
$sql = "SELECT postid FROM posts WHERE userid IN (:friend1, :friend2, :friend3)";
$pdo->prepare($sql);
$pdo->execute([
':friend1' => '1',
':friend2' => '2',
':friend3' => '3',
]);
【讨论】:
以上是关于在 MYSQL 中使用 IN 会导致 PHP 中的变量出现问题的主要内容,如果未能解决你的问题,请参考以下文章
Php Mysql NOT IN 数组只影响数组中的第一个结果
使用 MySql、PHP 和 ADODB 在准备好的语句中参数化 IN 子句