我正在尝试使用以下代码更新表。如果我更改WHERE temp_booking_id = ':temp_booking_id'");
为使用实际的当前会话temp_id
,则查询将运行,但会将占位符添加到表中(例如:签出)作为值。
$data
持有正确的值,但没有替换占位符。
盯着这个看了好几个小时,我一生都无法弄清楚问题是什么,环顾四周,但没有找到解决方案。
PDOStatement:errorInfo()
正在返回
PDOStatement::errorInfo(): 数组 ( [0] => 00000 )
如果我删除占位符周围的逗号,它会返回
PDOStatement::errorInfo(): 数组 ( [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();
}