Php sql select where like语句具有多个或多个操作数

Php sql select where like语句具有多个或多个操作数,php,select,sqlite,where,sql-like,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 l

我正在尝试编写一个简单的搜索函数,它读取字符串$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;
   }
这不起作用,除非我搜索一个状态

当然谢谢你了

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

应该可以正常工作。

1在表和列名中使用反勾号。 2.为了更清楚地理解,请使用括号表示每个或 3如果不使用绑定,则使用带引号的通配符%。 试着这样做:

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

不,这不起作用:-。仍然只有国家在运转。我会发布整个函数,也许我有别的错误。谢谢你的回复。这仍然不起作用。仅当我使用:$sql=select*from pms时,它才起作用,其中名称为“%$query%”或状态为“%$query%”,开头为“%$query%”,结尾为“%$query%”;我以为你在约束你的提问。好的,我正在更新我的答案。如果有帮助的话,那么您应该接受我的回答:binding语句中已解决的、不正确的语法$语句->bindValue':query',$query;应该是:$statement->bindValue':query',%%$query%;感谢其他成员的建议。他们帮助整理了我的代码:-