[英]LEFT JOIN breaks WHERE Clause
最近,我被要求從數據庫中輸入更多信息,而我只是通過LEFT JOIN來幫助我,它幾乎完美地工作了(它實際上從其他表中獲得了正確的字段),但是我的WHERE子句被取消了,給了用戶可以訪問兩個表,而不受我的where子句的限制。
MySQL不會處理任何錯誤,因此我假設這與我的where子句或聯接中發生的事情有關。
SELECT * FROM students
LEFT JOIN courses ON students.appliedforCourse = courses.idNumber
WHERE
students.telephone LIKE '%$var'
OR students.email LIKE '%$var'
OR students.address like'%$var%'
OR (CONCAT(students.firstName,' ',students.lastName) LIKE '%$var%')
AND addedBy ='$userid'
LIMIT $s,limit
該查詢本身是正確的(盡管由於OR和%%[將不使用索引]導致效率非常低)。
我建議回顯查詢,您確定$ var被正確評估了嗎? 嘗試直接在mysql中運行查詢(例如,通過phpmyadmin或使用控制台)。
我懷疑只是您沒有設置$ var值。 然后將條件(例如,students.telephone LIKE'%$ var')變成students.telephone LIKE'%'(對於非空地址始終為true),它將匹配聯接的每條記錄,正是您所得到的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.