我想搜索一下,您可以输入用户名的电子邮件,然后它将给您结果。
但是由于某种原因,它不起作用...
我认为这是错误的:
$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/