/ / PDO無効な数のパラメーターバウント[複製]-php、mysql、pdo

PDO無効な数のパラメータbount [duplicate] - php、mysql、pdo

私は何時間もコンピューターの画面から始めました(Adobe Dreamweaverの背景が白であることには役立ちません)

質問

命を救うためにこのエラーを見つけることはできません。 誰かがこれをスキャンして、私がどこに間違っているのか教えてもらえたら幸いです!

アドバイスが必要

PDOを初めて使用し、スイッチを作成しました。ゆっくりとハングアップしますが、mysqlクエリを使用してデバッグと戦っています。 PDO phpで。古いものでクエリエラーを見つけるのはかなり簡単でした mysql_* メソッドですが、PDO初心者としてデバッグに苦労しています。 mysql_error()?どんな助けとアドバイスも感謝します。

下のコード (私は初心者なので、コードが最もきれいではないかもしれないことに注意してください)

$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

回答:

回答№1は0

パラメータをバインドすると、いくつかの矛盾が発生します。 それは次のようなものでなければなりません:

$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 整数を使用していて、引用符で囲まないようにする必要があるため、定数。