Php PDO无效的参数数bount
我已经开始在电脑屏幕上工作了好几个小时(Adobe Dreamweaver的背景是白色的,这对我没有帮助) 问题 我无法找到这个错误来挽救我的生命,如果有人能扫描一下,告诉我哪里出了问题,我将不胜感激强> 需要建议 我是PDO新手,刚做了一个转换。我正在慢慢掌握它的窍门,但我正在努力调试,在php中使用带有Php PDO无效的参数数bount,php,mysql,pdo,Php,Mysql,Pdo,我已经开始在电脑屏幕上工作了好几个小时(Adobe Dreamweaver的背景是白色的,这对我没有帮助) 问题 我无法找到这个错误来挽救我的生命,如果有人能扫描一下,告诉我哪里出了问题,我将不胜感激 需要建议 我是PDO新手,刚做了一个转换。我正在慢慢掌握它的窍门,但我正在努力调试,在php中使用带有PDO的mysql查询时。在旧的mysql_*方法上很容易找到查询错误,但作为PDO新手,我在调试时遇到了困难。除了mysql\u error(),PDO的替代方案是什么?感谢您的帮助和建议 下面
PDO
的mysql查询时。在旧的mysql_*
方法上很容易找到查询错误,但作为PDO新手,我在调试时遇到了困难。除了mysql\u error(),PDO的替代方案是什么?感谢您的帮助和建议
下面的Codde(请记住我是新手,所以代码可能不是最漂亮的)
错误
:无效参数编号:未定义参数
绑定参数时存在一些不一致。
应该是这样的:
$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(':car_group', $carType);
$statement->bindValue(':return_time', $returnTime );
$statement->bindValue(':pickup_time', $pickupTime );
$statement->bindValue(':resId', $resId, PDO::PARAM_INT);
另外,
$resId
也应该受到保护,请参见我的代码片段中的PDO::PARAM_INT
常量的用法,因为您使用的是整数,不应该引用它。绑定参数时存在一些不一致性。
应该是这样的:
$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(':car_group', $carType);
$statement->bindValue(':return_time', $returnTime );
$statement->bindValue(':pickup_time', $pickupTime );
$statement->bindValue(':resId', $resId, PDO::PARAM_INT);
另外,
$resId
也应该受到保护,请参见我的代码片段中的PDO::PARAM_INT
常量的用法,因为您使用的是整数,不应该引用它。我看到了一种“罕见”的情况,即省略冒号('carType',$carType)
会导致这种情况。因此,请尝试添加它(':carType',$carType)
。编辑:在看到@gabe3886的评论后,我在这里是错的,但我的评论确实“有些真实”。该查询有:car\u group
,但您绑定了carType
。您在sql查询中没有定义名为carType
的占位符,但您仍然试图将值绑定到它。我看到了“罕见的”如果省略冒号('carType',$carType)
会导致这种情况。因此,请尝试添加它(':carType',$carType)
。编辑:在看到@gabe3886的评论后,我在这里错了,但我的评论确实“有些真实”。该查询有:car\u group
,但您绑定了carType
。您在sql查询中没有定义名为carType
的占位符,但是您仍然尝试将一个值绑定到它。为什么要将拾取时间设置为$statement->bindValue(“:picku_-time”,$resId,PDO::PARAM_-INT)代码>?没有必要这样设置。编辑:现在您的编辑提到了参数化resID,但没有设置它hanks@gabe3886,更新的回答为什么您要将拾取时间设置为$statement->bindValue(“:拾取时间,$resID,PDO::PARAM_INT”)代码>?没有必要这样设置。编辑:现在您的编辑提到参数化resID,但没有设置itThanks@gabe3886,更新答案