Php sql select where like语句具有多个或多个操作数
我正在尝试编写一个简单的搜索函数,它读取字符串$query 我的问题是,我可以在select语句中使用多个OR吗?我试图搜索一个字符串,看看它是否匹配许多列值,然后打印这些行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
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%;感谢其他成员的建议。他们帮助整理了我的代码:-