使用 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?
我已经在网上搜索了答案,如果我遗漏了一些明显的东西,我将不胜感激。否则,我将不胜感激直接帮助。这是我第一次尝试这样的查询。
我有以下查询:
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?