Berbilang Pernyataan SQL dalam Satu mysql_query()
Melaksanakan berbilang pernyataan SQL serentak menggunakan satu panggilan fungsi mysql_query() tidak boleh dilakukan dalam API MySQL standard. Ini adalah untuk mengelakkan pengguna berniat jahat daripada melaksanakan penyataan SQL sewenang-wenangnya dan berpotensi menjejaskan pangkalan data.
Walaupun pengehadan ini mungkin tidak menggalakkan sesetengah pengguna, adalah penting untuk menekankan bahawa ia berfungsi sebagai langkah keselamatan terhadap serangan suntikan SQL. Dengan mengehadkan keupayaan untuk melaksanakan berbilang kenyataan, kemungkinan penyerang mengeksploitasi kelemahan dan memperoleh akses tanpa kebenaran kepada data sensitif dikurangkan.
Walau bagaimanapun, terdapat pendekatan alternatif untuk melaksanakan berbilang kenyataan secara atom. Satu kaedah ialah menggunakan urus niaga. Dengan melampirkan berbilang penyata dalam blok transaksi, anda boleh memastikan bahawa semua penyata dilaksanakan dengan jayanya atau tiada langsung. Ini menyediakan tahap atomicity dan integriti data yang tidak mungkin dengan panggilan mysql_query() individu.
Sebagai contoh, untuk melaksanakan dua kenyataan KEMASKINI yang disebut dalam soalan dalam satu transaksi, anda boleh menggunakan kod berikut :
mysql_query("BEGIN TRANSACTION"); mysql_query("UPDATE table SET name = 'bob' WHERE name = 'jim'"); mysql_query("UPDATE table SET age = 55 WHERE name = 'jim'"); mysql_query("COMMIT TRANSACTION");
Dengan membungkus penyata dalam urus niaga, anda memastikan sama ada kedua-dua penyata berjaya dilaksanakan atau kedua-duanya tidak dilaksanakan. Pendekatan ini memberikan kawalan yang lebih besar dan menghalang kemas kini separa atau hasil lain yang tidak diingini.
Atas ialah kandungan terperinci Bolehkah Berbilang Pernyataan SQL Dilaksanakan dalam Panggilan mysql_query() Tunggal?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!