sql选择带有许多OR操作数的语句

时间:2014-04-09 08:15:34

标签: php select sqlite where sql-like

我正在尝试编写一个简单的搜索函数,该函数读入字符串$ query。

我的问题是,我可以在select语句中使用多个OR吗?我试图搜索一个字符串,看它是否匹配许多列值,然后打印这些行。

function search($query) {
   try {
     $db = db_open();

     $sql = "select * from pms where (name like :query) or (state like :query) or 
             (start like :query) or (finish like :query) ";

     $statement = $db->prepare($sql);
     $statement->bindValue(':query', $query);
     $statement->execute();
     $pms = $statement->fetchAll();

   } catch(PDOException $e) {
     die("Error: ".$e->getMessage());
     }
   return $pms;
   }

这不起作用,除非我搜索州。

由于

2 个答案:

答案 0 :(得分:0)

当然。

SELECT * FROM pms WHERE (name LIKE :query) OR (start LIKE :query) OR (finish LIKE :query)

应该工作得很好。

答案 1 :(得分:0)

1)在表名和列名中使用反引号 2)每个使用支架或更清楚的理解
3)如果你没有使用绑定,那么使用带引号的wildcat(%)。 试试这样:

$sql = "select * from `pms` 
where (`name` like '%query%') 
OR (`state` like '%query%') 
OR (`start` like '%query%') 
OR  (`finish` like '%query%') ";