我试图找出执行这些类型查询的最佳方式
我想要做的是构建一个过滤器类型函数,其中我在一个数组中并且构造了查询!
问题在于PDO,然后才能绑定准备语句所需的值,但如果我准备语句,我就无法更改查询。
让我举个例子:
public function GetFeedsByFilter($filter = array())
{
//Base Query
$Query = 'SELECT feeds,sites,users,categories WHERE feed_site_id = site_id AND feed_uid = user_id AND feed_category_id = category_id';
if(isset($filter['limit'])){$filter['limit'] = 30;} //Setters
//Check the different filters
if(isset($filter['category']))
{
//Here I want to bind the category
//i can do the following
$Query .= ' AND category_id = :cid';
//But now I cant bind the value with $statement->bindValue
}
}
现在我可以先为查询构造字符串,然后执行所有if语句来绑定它们,但这样做很多!
我是如何克服这个问题的?
答案 0 :(得分:1)
您可以使用if部分中的占位符填充数组。
例如
if(isset($filter['category'])){
$query .= ' AND category_id = :cid';
$binds['cid'] = 123;
}
然后“准备”您的查询并在执行命令
中将绑定值作为选项$pdo->execute($binds);