我正在尝试编写一个简单的搜索函数,用于读取字符串$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%') ";