Обновление PDO не заменяет заполнители в подготовленном операторе

Я пытаюсь обновить таблицу с помощью следующего кода. Если я изменю WHERE temp_booking_id = ':temp_booking_id'");на использование фактического текущего сеанса temp_id, запрос будет запущен, но добавит заполнители в таблицу (, например. :проверить -из )в качестве значения.

$dataсодержит правильные значения, но не заменяет заполнители.

Смотрю на это часами и не могу понять, в чем проблема, и огляделся, но не нашел решения.

PDOStatement:errorInfo()возвращается

PDOStatement::errorInfo(): Array ( [0] => 00000 )

и если я уберу кавычки вокруг заполнителей, он вернет

PDOStatement::errorInfo(): Array ( [0] => HY093 )

Любые идеи?

try {
  $data = array(
    'temp_booking_id' => $_SESSION['temp_id'],
    'check_in' => $in,
    'check_out' => $out, 
    'adults' => $a,
    'children1' => $c1,
    'children2' => $c2,
    'infants' => $i,
    'cots' => $c,
    'promo_code' => $pc
 );

 $STH = $DBH->prepare("UPDATE b_temp_booking 
   SET check_in = ':check_in',
   check_out = ':check_out',
   adults = ':adults',
   children1 = ':children1',
   children2 = ':children2',
   infants = ':infants',
   cots = ':cots',
   promo_code = ':promo_code' 
   WHERE temp_booking_id = ':temp_booking_id'");

 $STH->execute($data);

 echo "\nPDOStatement::errorInfo():\n";
 $arr = $STH->errorInfo();
 print_r($arr);

} catch(PDOException $e) {
  echo 'ERROR: '. $e->getMessage();
}
5
задан Taz 7 July 2012 в 08:47
поделиться