работа с pdo

Тема в разделе "PHP", создана пользователем phillip, 22 янв 2011.

Модераторы: latteo
  1. phillip

    phillip

    Регистр.:
    4 сен 2007
    Сообщения:
    413
    Симпатии:
    15
    Начал юзать PDO, один момент непонятный...
    В коде у меня есть такой момент что в зависимости от переменной, sql будет различный. Ну вот допустим

    PHP:
    $query "SELECT * FROM `objects` WHERE `ownerid`='".$id."'";
    if(
    $freeze!='all'$query.=" AND `freeze`='".$freeze."'";
    Таким образом, в зависимости от $freeze строка может принимать два вида
    PHP:
    "SELECT * FROM `objects` WHERE `ownerid`='4'
    PHP:
    "SELECT * FROM `objects` WHERE `ownerid`='4'  AND `freeze`='2'
    дак вот в pdo если я сделаю
    PHP:
    $STH->execute(array(':ownerid' => $id,':freeze' => $freeze));
    то работать верно не будет. надо писать вот так
    PHP:
    if($freeze!='all'
    $STH->execute(array(':ownerid' => $id,':freeze' => $freeze)); 
    else
    $STH->execute(array(':ownerid' => $id));
    то есть в $STH->execute надо передавать массив с переменными для запроса, и если запрос то у меня меняется, то и $STH->execute я должен переписывать в зависимости от условий каждый раз. Без pdo мне делать этого не приходилось
    А что если у меня sql будет меняться очень сильно, мне все это описывать надо. Вообщем надеюсь поняли в чем беда (( Кто как делает, подскажите
     
  2. chang

    chang

    Регистр.:
    20 ноя 2009
    Сообщения:
    364
    Симпатии:
    117
    дык можно переписать как-то так

    PHP:
    $data = array(':ownerid' => $id);

    if(
    $freeze!='all')  $data[':freeze'] =  $freeze

    $STH
    ->execute $data );
    и тогда нет особой разнице, конкатенировать строку по условию? или наполнять массив...
     
    phillip нравится это.