2016-03-20 3 views
0

配列内の各項目に対してSQLクエリを実行する最適な方法は何ですか?各配列の項目のSQLクエリを効率的に繰り返す

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

は、今私は$配列内の各項目について、次の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; 
    } 
} 
+0

MySQLカーソルが消費されると、クエリを再度実行する必要があります。私が知る限り、MySQLのキャッシュの他に、別のクエリを避ける方法はありません。 –

+0

これはおそらく助けになるかもしれません:http://stackoverflow.com/questions/14103202/how-to-fetch-2-times-in-mysql-pdo-without-fetchall –

+0

なぜそれをしたいですか? – Strawberry

答えて

0

よりもむしろ複数のクエリを実行している、あなたは1つのクエリを実行し、結果をループできます

あなたのPHPでこれらの線に沿って何かだろう
SELECT * FROM `TABLE` a WHERE a.`Code` IN (:codes); 

$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は、検索する結果ごとにCodeパラメータを含むPHP配列です。

寄付先This questionは、PDOを使用してWHERE ... INクエリを行う方法を助けました。

関連する問題