ホームページ  >  記事  >  データベース  >  PDO を使用して値の配列を MySQL データベースに効率的に挿入するにはどうすればよいですか?

PDO を使用して値の配列を MySQL データベースに効率的に挿入するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-10-29 20:35:29188ブラウズ

How Can I Efficiently Insert an Array of Values into a MySQL Database Using PDO?

PDO を使用して、単一のプリペアド ステートメントで MySQL データベースに配列を挿入する

オンライン登録を実行すると、次のような状況がよく発生します。顧客は登録用に複数のプログラムを選択します。これらのプログラムは、3 桁の整数の配列として表すことができます。これらの配列をデータベースに挿入するには、準備されたステートメントを 1 つ実行するほうが、複数回実行するよりも効率的です。

シナリオ例

次のプログラム ID を含む配列を考えてみましょう。

$data = [155, 165, 175, 185];

従来のループ手法

一般的な手法では、配列を反復処理し、複数の INSERT ステートメントを実行します。

<code class="php">for ($j = 0; $j < count($data) - 1; $j++) {
    $stmt = $db->prepare("INSERT INTO table SET memberID=?, programID=?, date_added=NOW()");
    $stmt->execute(array($memberid, $data[$j]));
}</code>

ただし、これは

動的 SQL ステートメント

単一の動的 SQL ステートメントを構築する方が効率的なオプションです:

<code class="php">$sql = 'INSERT INTO table (memberID, programID) VALUES ';
$insertQuery = array();
$insertData = array();
foreach ($data as $row) {
    $insertQuery[] = '(?, ?)';
    $insertData[] = $memberid;
    $insertData[] = $row;
}
if (!empty($insertQuery)) {
    $sql .= implode(', ', $insertQuery);
    $stmt = $db->prepare($sql);
    $stmt->execute($insertData);
}</code>

このアプローチでは、PDO を使用して、プレースホルダーと適切なデータを連結することにより、単一の準備済みステートメントを作成します。空の挿入を避けるために、ステートメントを実行する前に $insertQuery 配列を検証することが重要です。

以上がPDO を使用して値の配列を MySQL データベースに効率的に挿入するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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