php - 多个 where 子句 php

标签 php mysql select

我想知道是否有人可以帮助我。以下代码将生成类型 = 总线的所有用户,但不会仅生成已批准的 = 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/

相关文章:

SQL 学校作业,编写一个返回的 SELECT

php - 检查脚本完成时间

phpbb3 对新消息的缓慢索引

php - 在没有while语句的情况下返回单个查询中的所有数据php

MySQL 棘手的 Pivot 协助

MySQL 总结经文和 n 个最大的结果

php - 圆形图 Html

php - 如何解决与 sql_mode=only_full_group_by 不兼容的 mysql 问题

PHP匹配正则表达式中的多个完整单词

mysql - inner join 按客户显示销售列表