【发布时间】:2017-03-27 07:47:10
【问题描述】:
我已经在电脑屏幕上启动了好几个小时(Adobe Dreamweaver 的背景是白色的,这无济于事)
问题
我找不到这个错误来挽救我的生命,如果有人能扫描一下并告诉我哪里出错了,我将不胜感激!
需要建议
我是 PDO 的新手,刚刚进行了切换,我正在慢慢掌握它,但是当在 php 中使用带有 PDO 的 mysql 查询时,我正在与调试作斗争。在旧的mysql_* 方法上查找查询错误相当容易,但作为 PDO 新手,我很难调试。 mysql_error() 的关闭 PDO 替代方案是什么?任何帮助和建议表示赞赏。
下面的代码 (请记住我是新手,所以代码可能不是最漂亮的)
$resId = $_POST['resId'];
$name = $_POST['name'];
$surname = $_POST['surname'];
$coverName = $_POST['coverName'];
$email = $_POST['email'];
$phone = $_POST['phone'];
$carType = $_POST['carGroup'];
$pickupDate = $_POST['pickupDate'];
$pickupTime = $_POST['pickupTime'];
$returnDate = $_POST['returnDate'];
$returnTime = $_POST['returnTime'];
$rentalPeriode = $interval->format('%d'); //calculates correct
$sql = 'UPDATE car_reservations SET
renter_name = :renter_name,
renter_lastname = :renter_lastname,
email = :email,
phone = :phone,
pickup_date = :pickup_date,
return_date = :return_date,
number_days = :number_days,
insurance = :insurance,
car_group = :car_group,
return_time = :return_time,
pickup_time = :pickup_time
WHERE res_id = $resId';
$statement = $db->prepare($sql);
$statement->bindValue(':renter_name', $name);
$statement->bindValue('renter_lastname', $surname);
$statement->bindValue(':email', $email);
$statement->bindValue(':phone', $phone);
$statement->bindValue(':pickup_date', $pickupDate);
$statement->bindValue(':return_date', $returnDate);
$statement->bindValue(':number_days', $rentalPeriode);
$statement->bindValue(':insurance', $coverName);
$statement->bindValue('carType', $carType);
$statement->bindValue(':return_time', $returnTime );
$statement->bindValue(':pickup_time', $pickupTime );
$success = $statement->execute();
错误
: Invalid parameter number: parameter was not defined
【问题讨论】:
-
我见过“罕见”的情况,即省略冒号
('carType', $carType)会导致这种情况。所以尝试添加它(':carType', $carType)。编辑:在看到@gabe3886 的评论后,我错了,但我的评论确实“有些道理”。 -
查询有
:car_group,但你绑定carType。 -
您尚未在 sql 查询中定义名为
carType的占位符,但您仍尝试将值绑定到它。