PHP有效地为每个数组的项重复SQL查询

时间:2016-03-20 18:59:56

标签: php mysql arrays pdo

为数组中的每个项目运行SQL查询的最佳方法是什么?

我有 $ array 代码:

Array
(
  [0] => 12345
  [1] => 12346
  [3] => 12347
)

现在,我想为 $ array 中的每个项目运行以下 SQL 查询:

SELECT * FROM `TABLE` a WHERE a.`Code` = :code

PHP我一直在使用:

$results = array();

$statement = $pdo->prepare($sql);
$statement->bindParam(':code', $value);

foreach ($array as $key => $value) {
    $statement->execute();

    while (($results = $statement->fetch(PDO::FETCH_ASSOC)) !== false) {
        echo $results;
    }
} 

1 个答案:

答案 0 :(得分:0)

您可以运行一个查询,然后遍历结果,而不是运行多个查询:

SELECT * FROM `TABLE` a WHERE a.`Code` IN (:codes);

PHP中的这些内容将是这样的:

$question_marks = str_repeat("?,", count($array_of_codes)-1) . "?"; 
$statement = $pdo->prepare($sql);
$statement->bindParam(:codes, $question_marks);
$statement->execute($array_of_codes);

while (($results = $statement->fetch(PDO::FETCH_ASSOC)) !== FALSE) {
  echo $results;
}

$array_of_codes是您的PHP数组,其中包含您要查找的每个结果的Code参数。

信用到期 This question帮助了如何使用PDO进行WHERE ... IN查询。