我想知道是否有人可以帮助我。以下代码将生成类型 = 总线的所有用户,但不会仅生成已批准的 = 1。如果有人能指出我的错误,我将不胜感激。搜索查询是由某人通过表单在文本框中输入单词来触发的,这部分工作正常,只有在配置文件中包含搜索词的用户才会出现,并且只有类型 = 总线但批准 = 1 的用户似乎没有效果,并且返回所有批准,我真的希望有人能提供帮助。
$query = "select * from users where type='bus' and approved=1 and
name like \"%$trimmed%\"
or profile_words like \"%$trimmed%\"
or full_name like \"%$trimmed%\"
or tag_line like \"%$trimmed%\"
or referral like \"%$trimmed%\"
or profession like \"%$trimmed%\"
order by full_name";
最佳答案
像这样对您的条件进行分组,
$query = "
select *
from users
where type='bus' and
approved = 1 and
(
name like \"%$trimmed%\" or
profile_words like \"%$trimmed%\" or
full_name like \"%$trimmed%\" or
tag_line like \"%$trimmed%\" or
referral like \"%$trimmed%\" or
profession like \"%$trimmed%\
)
order by full_name";
我给你一个建议,请使用 PDO 或 MySQLI 扩展以避免 SQL 注入(inject)。
PDO 示例,
<?php
$query = "
select *
from users
where type='bus' and
approved = 1 and
(
name like ? or
profile_words like ? or
full_name like ? or
tag_line like ? or
referral like ? or
profession like ?
)
order by full_name";
$name = '%' . $trimmed . '%';
$stmt = $dbh->prepare($query);
$stmt->bindParam(1, $name);
$stmt->bindParam(2, $name);
$stmt->bindParam(3, $name);
$stmt->bindParam(4, $name);
$stmt->bindParam(5, $name);
$stmt->bindParam(6, $name);
$stmt->execute();
?>
关于php - 多个 where 子句 php,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12105752/