使用 WHERE 子句将数组传递给查询 - 在 phpmyadmin 中有效,而不是在我的脚本中

Passing an array to a query using a WHERE clause - works in phpmyadmin, not in my script

我已经在网上搜索了答案,如果我遗漏了一些明显的东西,我将不胜感激。否则,我将不胜感激直接帮助。这是我第一次尝试这样的查询。

我有以下查询:

SELECT * FROM `dice_t` WHERE qty IN (:qty) AND opacity IN (:opacity) AND color IN (:color)

我正在向其提供以下数组:

Array
(
    [qty] => 1,2
    [opacity] => 3
    [color] => 467,1007
)

它在 phpMyAdmin 中完美运行(检索 163 行)(当我输入值时),但在我的脚本中,它仅检索 114 行,这对应于仅使用每个字段中的第一个值(即 qty :1;不透明度:3;颜色:467)。我已经通过 运行 仅使用 phpMyAdmin 中的那些值的查询验证了这一点。

我的代码如下所示:

$statement = $dbConn->prepare($sql);
$statement->execute($queryData);
$result = $statement->fetchAll(PDO::FETCH_ASSOC);

当我打印 $sql 和 $queryData 的值时,我得到上面前两个代码块中列出的值。

字段都是整数。我尝试在值周围使用单引号进行搜索,但出现错误。

我不知道我做错了什么。

变量 :qty 被处理为字符串 你有 '1,1'

所以你必须使用FIND_IN_SET

SELECT * FROM `dice_t` WHERE FIND_IN_SET(`qty`,:qty) AND  FIND_ON_SET(`opacity`,:opacity) AND  FIND_IN_SET(`color`,:color)

本帖中有其他方法Can I bind an array to an IN() condition?