ホームページ >バックエンド開発 >PHPチュートリアル >WHERE ... IN() 句の MySQL プリペアド ステートメントで配列を効率的に使用するにはどうすればよいですか?

WHERE ... IN() 句の MySQL プリペアド ステートメントで配列を効率的に使用するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-29 04:06:13218ブラウズ

How Can I Efficiently Use Arrays with MySQL Prepared Statements in WHERE ... IN() Clauses?

WHERE ... IN(...) クエリに MySQL プリペアド ステートメントで配列を使用する

プリペアド ステートメントを使用してデータベースにクエリを実行する場合、パフォーマンスを向上させるために、単一のステートメントを準備して複数回実行することをお勧めします。ただし、WHERE ... IN(...) クエリの ID 配列を扱う場合、実行後に結果を手動で並べ替えるのは非効率的になる可能性があります。

別のアプローチとして、配列の長さに基づくプレースホルダー (?) のカンマ区切りのリスト。次の例を考えてみましょう:

$ids = array(1,5,18,25);

// Create a string containing ?,?,?
$clause = implode(',', array_fill(0, count($ids), '?'));

$stmt = $mysqli->prepare('SELECT * FROM somewhere WHERE `id` IN (' . $clause . ') ORDER BY `name`;');

call_user_func_array(array($stmt, 'bind_param'), $ids);
$stmt->execute();

// Loop through results

このアプローチでは、implode(...) は必要な数のプレースホルダーを含む文字列を作成します。次に、call_user_func_array(...) 関数は、$ids 配列の値をプレースホルダーにバインドします。この手法を使用すると、MySQL の組み込み並べ替え機能を使用して結果を並べ替えることができるため、手動で並べ替える必要がなくなります。

以上がWHERE ... IN() 句の MySQL プリペアド ステートメントで配列を効率的に使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。