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 サイトの他の関連記事を参照してください。