跃然一笑
使用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);使用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->execute();$result = $statement->get_result();说明:使用SQLIN()运算符检查给定列表中是否存在值。一般来说,它看起来是这样的:expr IN (value,...)我们可以构建一个表达式来放置在()从我们的阵列。请注意,括号内必须至少有一个值,否则MySQL将返回一个错误;这等于确保输入数组至少有一个值。若要帮助防止SQL注入攻击,请首先生成?为每个输入项创建参数化查询。在这里,我假设包含您的ID的数组被调用$ids:$in = join(',', array_fill(0, count($ids), '?'));$select = <<<SQL
SELECT *
FROM galleries
WHERE id IN ($in);SQL;给定由三个项组成的输入数组$select看起来像:SELECT *FROM galleries
WHERE id IN (?, ?, ?)再次注意,有一个?对于输入数组中的每个项。然后,我们将使用PDO或MySQLi来准备和执行上述查询。使用IN()带字符串的运算符由于绑定参数的存在,很容易在字符串和整数之间进行更改。对于PDO,不需要更改;对于MySQLi更改str_repeat('i',到str_repeat('s',如果你需要检查字符串。[1]:为了简洁起见,我省略了一些错误检查。您需要检查每个数据库方法的常见错误(或者将DB驱动程序设置为抛出异常)。[2]:需要PHP 5.6或更高版本。同样,我省略了一些错误检查,以保证简洁性。