私は古い php mysql 拡張機能に精通しています。
mysqli 拡張機能を使用する最初のスクリプトに取り組んでいます。
動的に生成されるテーブルに多数の行を挿入しようとしています。
毎回挿入される新しい行の数を事前に知らなくても、準備済みステートメントを使用して複数の行をテーブルに挿入することは可能ですか?
$stmt = $mysqli->prepare("INSERT INTO `activity` (`id`, `name`, `type`) VALUES ?, ?, ?;");
それが不可能な場合は、より効率的です。
- 準備済みステートメント、一度に 1 行ずつ
準備されていないステートメント、一度に最大 50 行
// prepared statement $stmt = $mysqli->prepare("INSERT INTO `activity` (`id`, `name`, `type`) VALUES (?, ?, ?)"); for($i=0;$i<$limit;$i++) { $stmt->bind_param('iss', $id[$i], $name[$i], $type[$i]); $stmt->execute(); } // non-prepared statement $query = "INSERT INTO `activity` (`id`, `name`, `type`) VALUES "; for($i=0;$i<$limit;$i++) { $query .= "\n(".$mysqli->real_escape_string($id[$i]), $mysqli->real_escape_string($name[$i]), $mysqli->real_escape_string($type[$i])."),"; } $query = substr($query, 0, -1).';';
PHP v.5.3.8
MySQL v. 5.1.60