1

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

2 回答 2

5

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

于 2012-04-21T12:20:17.697 回答
0

我怀疑只是您没有设置 $var 值。然后条件,例如 students.telephone LIKE '%$var' 将变为 students.telephone LIKE '%' (对于非空地址始终为真),这将匹配 join 的每条记录,正是你得到的。

于 2012-04-21T12:23:16.443 回答