簡體   English   中英

LEFT JOIN中斷WHERE子句

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM