我最近被要求从我的数据库中输入更多的信息,我刚刚离开了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发布于 2012-04-21 20:20:18
查询本身是正确的(尽管由于ORs和%%索引将不会被使用而导致效率非常低)。
我建议回显这个查询,您确定$var的计算结果正确吗?尝试直接在mysql中运行查询(例如,通过phpmyadmin或使用控制台)。
发布于 2012-04-21 20:23:16
我怀疑您只是没有设置$var的值。然后条件,例如students.telephone LIKE '%$var‘将变成students.telephone LIKE '%’(对于非空地址总是真的),它将匹配联接的每一条记录,这正是您所得到的。
https://stackoverflow.com/questions/10258802
复制相似问题