LEFT JOIN打破WHERE子句

时间:2012-04-21 12:15:22

标签: mysql

我最近被要求从我的数据库中输入更多信息,我只是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

2 个答案:

答案 0 :(得分:5)

查询本身是正确的(尽管由于OR和%%[索引不会被使用]而效率非常低)。
我建议回应查询,你确定$ var是否正确评估?尝试直接在mysql中运行查询(例如通过phpmyadmin或使用控制台)。

答案 1 :(得分:0)

我怀疑只是你没有设置$ var值。然后条件例如students.telephone LIKE'%$ var'将成为students.telephone LIKE'%'(对于非空地址始终为true),它将匹配联接的每个记录,正是您所获得的。