我最近被要求从我的数据库中输入更多信息,我只是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
答案 0 :(得分:5)
查询本身是正确的(尽管由于OR和%%[索引不会被使用]而效率非常低)。
我建议回应查询,你确定$ var是否正确评估?尝试直接在mysql中运行查询(例如通过phpmyadmin或使用控制台)。
答案 1 :(得分:0)
我怀疑只是你没有设置$ var值。然后条件例如students.telephone LIKE'%$ var'将成为students.telephone LIKE'%'(对于非空地址始终为true),它将匹配联接的每个记录,正是您所获得的。