/ / PDO Ungültige Anzahl von Parametern bount [duplicate] - php, mysql, pdo

PDO Ungültige Anzahl von Parametern bount [duplicate] - php, mysql, pdo

Ich habe stundenlang am Computerbildschirm angefangen (hilft nicht, dass Adobe Dreamweaver einen weißen Hintergrund hat)

Frage

Ich kann diesen Fehler nicht finden, um mein Leben zu retten, Ich würde es sehr schätzen, wenn jemand mir einen Scan geben könnte und mir sagen könnte, wo ich falsch liege!

Beratung benötigt

Ich bin neu in PDO und habe nur den Schalter gemacht, ich bin langsam den Dreh raus, aber ich kämpfe mit dem Debuggen, wenn ich mysql-Abfragen mit verwende PDO in php. Es war ziemlich einfach, die Abfragefehler auf dem alten zu finden mysql_* Methode, aber als PDO Anfänger habe ich eine harte Zeit zu debuggen. Was wäre die PDO Alternative zu mysql_error()? Jede Hilfe und Beratung geschätzt.

Codde unten (Bitte beachten Sie, dass ich ein Anfänger bin, damit der Code nicht der Schönste ist)

$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();

Error

: Invalid parameter number: parameter was not defined

Antworten:

0 für die Antwort № 1

Sie haben einige Inkohärenzen, wenn Sie Ihre Parameter binden. Es sollte so etwas wie sein:

$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);

Ebenfalls, $resId sollte auch geschützt werden, siehe auf meinem Snippet die Verwendung von PDO::PARAM_INT Konstante, weil Sie eine Ganzzahl verwenden und sie nicht zitiert werden sollte.