2012-08-24 96 views
0

我想知道如果有人能帮助我。下面的代码将生成type = bus的所有用户,但不会生成只有批准= 1的用户。如果有人能指出我的错误,我会很感激。搜索查询被某人通过表单输入到文本框中的字词激活,这部分工作正常,只有那些搜索词在那里配置文件出现,只有他们与type = bus但批准= 1似乎没有影响和返回所有批准,我真的希望有人可以帮助。multiple where子句php

$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"; 

回答

0
$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"; 

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"; 

我有一个建议给你时,请使用PDOMySQLI扩展名从SQL注入,以避免。

例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(); 

?> 
0

我觉得你的一部分批准的是好的,但我认为问题可能出在OR的起点。尝试通过分离ANDOR语句像这样把括号:

$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"; 
0

支架的地方运营商。目前您正在获取

where (type='bus' and approved=1) 
or .... [all the other operators]