我想搜索一下,您可以输入用户名的电子邮件,然后它将给您结果。
但是由于某种原因,它不起作用...

我认为这是错误的:

$w_search = "WHERE u.user_name LIKE '%$q%' AND u.user_email LIKE '%$q%'";


编辑:
完整的查询是:

SELECT u.user_id, u.user_name, u.user_rank, u.user_email, p.p_name, p.p_profimg FROM u_registered AS u LEFT JOIN u_profile AS p ON u.user_id = p.user_id '.$w_search.' ORDER BY u.user_id


你可以帮帮我吗?
谢谢。

最佳答案

您的问题是您的where子句有两个条件,可能使它“不起作用”,请参见:

WHERE u.user_name LIKE '%$q%' AND u.user_email LIKE '%$q%'


这意味着您要寻找的用户需要在PART中(名称为$q的部分)中包含该like,并且同时在其电子邮件的一部分中具有该user_name。因此,如果您有一个名字叫Bart且电子邮件为[email protected]的人,您的查询将永远不会返回,因为一个过滤器返回true,另一个过滤器返回false。

正确的方法是使用OR运算符确定其中一个取决于$q或两者均是:

WHERE u.user_name LIKE '%$q%' OR u.user_email LIKE '%$q%'


但是,如果这是某种测试,则名称或电子邮件是否与数据库中给出的名称完全相同,您需要:

WHERE u.user_name = '$q'


要么

WHERE u.user_email = '$q'

关于mysql - Sql:“哪里”和“与”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45910192/

10-12 07:16