PDO BindValue без добавления к запросу! - PullRequest
0 голосов
/ 26 августа 2010

Я пытаюсь найти лучший способ выполнить эти типы запросов

Что я хочу сделать, это построить функцию типа фильтра, где я был в массиве, и запрос построен!

проблема в 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 Ответ

1 голос
/ 26 августа 2010

вы можете заполнить массив заполнителями в ваших частях if.

например,

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

Затем «подготовьте» свой запрос и укажите значения привязки в качестве опции в команде execute

$pdo->execute($binds);

см. http://uk.php.net/manual/de/pdostatement.execute.php для получения дополнительной информации

...