带有许多OR操作数的sql select where like语句


sql select where like statement with many OR operands

我正在尝试编写一个简单的搜索函数,用于读取字符串$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) 如果不使用绑定,则使用带引号的wildcat(%)。试试这个:

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