PDO BindValue无需添加查询!

时间:2010-08-25 21:12:22

标签: php pdo bind prepare

我试图找出执行这些类型查询的最佳方式

我想要做的是构建一个过滤器类型函数,其中我在一个数组中并且构造了查询!

问题在于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语句来绑定它们,但这样做很多!

我是如何克服这个问题的?

1 个答案:

答案 0 :(得分:1)

您可以使用if部分中的占位符填充数组。

例如

if(isset($filter['category'])){
     $query .= ' AND category_id = :cid';
     $binds['cid'] = 123; 
}

然后“准备”您的查询并在执行命令

中将绑定值作为选项
$pdo->execute($binds);

请参阅http://uk.php.net/manual/de/pdostatement.execute.php了解详情