本文翻译自:Passing an array to a query using a WHERE clause
Given an array of ids $galleries = array(1,2,5)
I want to have a SQL query that uses the values of the array in its WHERE clause like: 给定一个ID数组$galleries = array(1,2,5)
我想拥有一个SQL查询,该查询使用WHERE子句中的数组值,例如:
SELECT *
FROM galleries
WHERE id = /* values of array $galleries... eg. (1 || 2 || 5) */
How can I generate this query string to use with MySQL? 如何生成此查询字符串以用于MySQL?
#1楼
参考:https://stackoom.com/question/3oA2/使用WHERE子句将数组传递给查询
#2楼
Using PDO: [1] 使用PDO: [1]
$in = join(',', array_fill(0, count($ids), '?'));
$select = <<<SQL
SELECT *
FROM galleries
WHERE id IN ($in);
SQL;
$statement = $pdo->prepare($select);
$statement->execute($ids);
Using MySQLi [2] 使用MySQLi [2]
$in = join(',', array_fill(0, count($ids), '?'));
$select = <<<SQL
SELECT *
FROM galleries
WHERE id IN ($in);
SQL;
$statement = $mysqli->prepare($select);
$statement->bind_param(str_repeat('i', count($ids)), ...$ids);
$statement->execut