私は何時間もコンピューターの画面から始めました(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
整数を使用していて、引用符で囲まないようにする必要があるため、定数。