Penggunaan UPDATE dan LIMIT yang Salah
Pengguna MySQL mungkin menghadapi ralat "Penggunaan UPDATE dan LIMIT yang salah" apabila cuba melaksanakan pertanyaan yang melibatkan kedua-dua pernyataan UPDATE dan Klausa LIMIT.
Untuk menyelesaikan isu ini, adalah penting untuk memahami pengehadan pernyataan KEMASKINI apabila digunakan dengan berbilang jadual. Menurut dokumentasi MySQL, "Untuk sintaks berbilang jadual, UPDATE mengemas kini baris dalam setiap jadual yang dinamakan dalam table_references yang memenuhi syarat. Dalam kes ini, ORDER BY dan LIMIT tidak boleh digunakan."
Dalam contoh kod disediakan:
$q = "UPDATE users INNER JOIN contact_info ON contact_info.user_id = users.user_id SET active.users = NULL WHERE (email.contact_info = '" . mysqli_real_escape_string($mysqli, $x) . "' AND active.users = '" . mysqli_real_escape_string($mysqli, $y) . "') LIMIT 1";
Pertanyaan cuba melakukan kemas kini menggunakan berbilang jadual (pengguna dan contact_info) sambil turut menggunakan klausa LIMIT. Seperti yang dijelaskan sebelum ini, LIMIT tidak boleh digunakan dalam senario sedemikian.
Untuk membetulkan isu, pertimbangkan untuk mengubah suai pertanyaan seperti berikut:
$q = "UPDATE users INNER JOIN contact_info ON contact_info.user_id = users.user_id SET active.users = NULL WHERE (email.contact_info = '" . mysqli_real_escape_string($mysqli, $x) . "' AND active.users = '" . mysqli_real_escape_string($mysqli, $y) . "');";
Dengan mengalih keluar klausa LIMIT, pertanyaan akan berjaya dilaksanakan dan kemas kini baris yang ditentukan dalam jadual pengguna.
Atas ialah kandungan terperinci Mengapa MySQL Membuang Ralat \'Penggunaan KEMASKINI dan LIMIT\' yang Salah?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!