一度に大量のクエリを実行しないでください。通常、1つの成功は、他のすべての操作が正しく実行されているかどうかに依存するため、問題が発生したときに何も問題がないかのようにブルドーザーを操作することはできません。
あなたはこのようにそれを行うことができます:
$queries = [
"CREATE TEMPORARY TABLE tmp SELECT * FROM event_categoriesBU WHERE id = 1",
"UPDATE tmp SET id=100 WHERE id = 1",
"INSERT INTO event_categoriesBU SELECT * FROM tmp WHERE id = 100"
];
foreach ($query as $query) {
$stmt = $conn->prepare($query);
$stmt->execute();
}
例外を有効にする ことを忘れないでください クエリが失敗すると、制御不能になるのではなく、プロセスが停止します。
しない理由 multi_query
を使用する その関数はプレースホルダー値をサポートしていないためです。このクエリで何らかのユーザーデータを導入する必要がある場合は、bind_param
を使用する必要があります 安全に行うために。プレースホルダー値がないと、SQLインジェクションのバグにさらされ、アプリケーション全体を脆弱にするのに1つで十分です。
PDOは、mysqli
よりもはるかに柔軟で適応性があることに注意してください。 したがって、mysqli
にあまり投資していない場合 、スイッチを検討する価値があります。