我正在尝试编写一个简单的搜索函数,该函数读入字符串$ 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;
}
这不起作用,除非我搜索州。
由于
答案 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%') ";