给定一组id $galleries = array(1,2,5)
我想要一个SQL查询,它在WHERE子句中使用数组的值,如:
SELECT *
FROM galleries
WHERE id = /* values of array $galleries... eg. (1 || 2 || 5) */
Run Code Online (Sandbox Code Playgroud)
如何生成此查询字符串以用于MySQL?
我正在使用PDO执行一个带有IN
子句的语句,该子句使用数组作为它的值:
$in_array = array(1, 2, 3);
$in_values = implode(',', $in_array);
$my_result = $wbdb->prepare("SELECT * FROM my_table WHERE my_value IN (".$in_values.")");
$my_result->execute();
$my_results = $my_result->fetchAll();
Run Code Online (Sandbox Code Playgroud)
上面的代码完全正常,但我的问题是为什么这不是:
$in_array = array(1, 2, 3);
$in_values = implode(',', $in_array);
$my_result = $wbdb->prepare("SELECT * FROM my_table WHERE my_value IN (:in_values)");
$my_result->execute(array(':in_values' => $in_values));
$my_results = $my_result->fetchAll();
Run Code Online (Sandbox Code Playgroud)
此代码将返回my_value
等于$in_array
(1)中第一项的项,但不返回数组中的其余项(2和3).
可能重复:
使用数组的MySQL查询将数组
传递给mysql
我在PHP中有一个数组:
$array = array(1, 4, 5, 7);
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我有一个不同值的数组,但我想编写一个MYSQL语句来检查它id
是否等于数组中的任何值.例如,如果一行的id
值为1,则它将返回该行,对于4,5和7也是如此.由于程序的性质,数组的长度可能会有所不同,因此这就是问题所在.我可以这样做:
SELECT ...
FROM ...
WHERE id = '$array'
Run Code Online (Sandbox Code Playgroud)
或者,还有更好的方法?
如果我不清楚,请向我询问更多信息.