Rumah >pangkalan data >tutorial mysql >Mengapa Klausa SQL WHERE Saya Nampaknya Mengabaikan Parameter?
Menyelesaikan masalah SQL WHERE Klausa: Menangani Parameter Overlook
Artikel ini menangani isu pertanyaan SQL biasa yang mana klausa WHERE
nampaknya mengabaikan parameter tertentu. Pertimbangkan contoh ini:
<code class="language-sql">SELECT * FROM people WHERE university='2' AND MATCH (lname,fname) AGAINST ('+massive' IN BOOLEAN MODE) OR (fname LIKE '%box%' OR lname LIKE '%box%') </code>
Pertanyaan ini, tanpa diduga, mengembalikan baris dengan university
bukan '2'. Masalahnya terletak pada keutamaan pengendali dan susunan operasi.
Penyelesaian melibatkan penstrukturan semula klausa WHERE
menggunakan kurungan untuk mengumpulkan syarat dengan betul:
<code class="language-sql">SELECT * FROM people WHERE university='2' AND (MATCH (lname,fname) AGAINST ('+massive' IN BOOLEAN MODE) OR fname LIKE '%box%' OR lname LIKE '%box%')</code>
Dengan menyertakan syarat MATCH
dan LIKE
dalam kurungan, kami memastikan kedua-dua carian teks penuh dan syarat LIKE
digunakan hanya pada baris dengan university = '2'
. Operator AND
kemudiannya mengehadkan keputusan dengan betul kepada yang memenuhi semua kriteria yang ditentukan. Struktur yang disemak ini menjamin hasil yang tepat berdasarkan penapisan parameter yang dimaksudkan.
Atas ialah kandungan terperinci Mengapa Klausa SQL WHERE Saya Nampaknya Mengabaikan Parameter?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!