Dalam percubaan untuk melaksanakan berbilang pertanyaan MySQL dalam satu skrip PHP, pengguna mungkin menghadapi masalah berulang ralat sintaks. Artikel ini menyelidiki punca ralat ini dan menyediakan penyelesaian yang kukuh untuk mengelakkannya.
Coretan kod yang menyebabkan ralat sintaks muncul seperti berikut:
<code class="php">$sql = "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;";</code>
Mesej ralat yang ditemui mencadangkan sintaks yang salah berhampiran penyatuan berbilang pertanyaan dalam pembolehubah $sql. Untuk menyelesaikan masalah ini, adalah penting untuk memisahkan pertanyaan dan bukannya merantainya bersama-sama.
Pendekatan yang lebih baik melibatkan mengulangi setiap pertanyaan secara individu, memastikan pelaksanaan setiap langkah yang berjaya sebelum meneruskan ke langkah seterusnya. Ini boleh dicapai menggunakan kod berikut:
<code class="php">$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 ($queries as $query) { $stmt = $conn->prepare($query); $stmt->execute(); }</code>
Dengan menggunakan pendekatan ini, anda memastikan setiap pertanyaan dilaksanakan secara bebas, mengurangkan risiko ralat kompaun. Selain itu, pertimbangkan untuk mendayakan pengecualian untuk menghentikan proses sekiranya terdapat sebarang pertanyaan yang gagal, menghalang pelaksanaan yang tidak terkawal.
Pertimbangan juga untuk menukar kepada PDO (Objek Data PHP) kerana ia menawarkan lebih fleksibiliti dan kebolehsuaian dalam interaksi pangkalan data.
Atas ialah kandungan terperinci Mengapa Saya Mendapat Ralat Sintaks Apabila Melaksanakan Berbilang Pertanyaan MySQL dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!