MySQL Ralat: Salah Penggunaan UPDATE dan LIMIT
Apabila melaksanakan pertanyaan UPDATE pada berbilang jadual dalam MySQL, ralat mungkin berlaku disebabkan oleh penggunaan UPDATE dan LIMIT yang salah. Isu ini timbul apabila cuba mengemas kini rekod dalam berbilang jadual di mana keadaan ON bergabung dengan jadual dan klausa LIMIT digunakan.
Menurut dokumentasi MySQL untuk KEMASKINI, "Untuk sintaks berbilang jadual, KEMASKINI 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 kod MySQL yang disediakan, pertanyaan cuba mengemas kini baris dalam "pengguna" dan "contact_info. " jadual berdasarkan syarat cantum. Walau bagaimanapun, klausa LIMIT digunakan untuk mengehadkan bilangan baris yang dikemas kini kepada 1. Ini tidak dibenarkan dalam pertanyaan KEMASKINI berbilang jadual.
Untuk menyelesaikan isu ini, alih keluar klausa LIMIT daripada pertanyaan. Ini akan membenarkan pernyataan KEMASKINI mempengaruhi semua baris dalam jadual yang dicantumkan yang memenuhi syarat yang ditentukan. Kod yang diubah suai akan kelihatan seperti ini:
$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) . "')"; $r = mysqli_query ($mysqli, $q) or trigger_error("Query: $q\n<br />MySQL Error: " . mysqli_error($mysqli));
Dengan mengalih keluar klausa LIMIT, pertanyaan akan mengemas kini semua baris dalam kedua-dua jadual "pengguna" dan "contact_info" di mana alamat e-mel dan status aktif sepadan dengan yang ditentukan nilai.
Atas ialah kandungan terperinci ## Mengapa Klausa LIMIT Tidak Dibenarkan dalam Pertanyaan KEMASKINI Berbilang Jadual dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!