Jangan menjalankan banyak kueri sekaligus. Biasanya keberhasilan satu tergantung pada semua operasi lain yang telah dilakukan dengan benar, jadi Anda tidak bisa hanya menggunakan buldoser seolah-olah tidak ada yang salah ketika ada masalah.
Anda dapat melakukannya seperti ini:
$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();
}
Jangan lupa untuk mengaktifkan pengecualian sehingga kegagalan kueri apa pun akan menghentikan proses Anda alih-alih hal yang lepas kendali.
Alasan Anda tidak gunakan multi_query
adalah karena fungsi itu tidak mendukung nilai placeholder. Jika Anda perlu memasukkan beberapa jenis data pengguna dalam kueri ini, Anda perlu menggunakan bind_param
untuk melakukannya dengan aman. Tanpa nilai placeholder, Anda akan terkena bug injeksi SQL, dan satu bug saja sudah cukup untuk membuat seluruh aplikasi Anda rentan.
Perlu dicatat bahwa PDO jauh lebih fleksibel dan mudah beradaptasi daripada mysqli
jadi jika Anda tidak terlalu banyak berinvestasi di mysqli
, ada baiknya mempertimbangkan untuk beralih.