MySQLi での単一のプリペアド ステートメントによる複数の行の挿入
問題:
複数の行の挿入プリペアド ステートメントを使用してデータベースに行を追加すると、行ごとに個別のクエリを実行する必要がなくなります。
解決策:
プリペアド ステートメントは通常、単一行の操作を処理しますが、特別なクエリ構文と手法を使用して複数の行を挿入します。
アプローチ:
コード例:
<code class="php">$rows = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]; $rowCount = count($rows); $values = "(&" . implode('),(', array_fill(0, $rowCount, '?,?,?')) . "&)"; $stmt = $conn->prepare("INSERT INTO test (col1, col2, col3) VALUES $values"); $stmt->bind_param(str_repeat('i', $rowCount * 3), ...array_merge(...$rows)); $stmt->execute();</code>
代替アプローチ:
単一行の準備済みステートメントを使用することもできます。プレースホルダーを使用して行ごとにループで実行します。これは単純ですが、効率が低下する可能性があります。
以上がMySQLi で単一のプリペアド ステートメントを使用して複数の行を挿入するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。