Aktualisieren mehrerer MySQL-Tabellenspalten mithilfe von Arrays mit PDO

Ich versuche, alle meine MySQL-Verbindungen von der alten mysql_query auf PDOs umzustellen. Ich versuche, mehrere Zeilen und Spalten einer MySQL-Tabelle mit verschiedenen Arrays zu aktualisieren, und erhalte die folgende Fehlermeldung:

[42000]: Syntaxfehler oder Zugriffsverletzung: 1064 Ihre SQL-Syntax ist fehlerhaft. In dem Handbuch, das Ihrer MySQL-Serverversion entspricht, finden Sie die richtige Syntax für die Angabe der WHERE-ID in der Zeile nahe der Werte ("admin", "300.00", "400.00", "10 .00") 1

Aus dem folgenden Code:

$account = $_POST['account'];
$car_lease = $_POST['car_lease'];
$radio_lease = $_POST['radio_lease'];
$misc_lease = $_POST['misc_lease'];
$lease_ID = $_POST['lease_ID'];

//$data = array_map(null,$account,$car_lease,$radio_lease,$misc_lease);
$A = count($lease_ID);

try {
    $DBH = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass);
    $DBH->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
    $STH = $DBH->prepare('UPDATE lease (accnt, car, radio, misc) values (:account, :car_lease, :radio_lease, :misc_lease) WHERE ID = :lease_ID');
    $i = 0;
    while($i < $A) {
        $STH->bindParam(':account', $account[$i]);
        $STH->bindParam(':car_lease', $car_lease[$i]);
        $STH->bindParam(':radio_lease', $radio_lease[$i]);
        $STH->bindParam(':misc_lease', $misc_lease[$i]);
        $STH->bindParam(':lease_ID', $lease_ID[$i]);
        $STH->execute();
        $i++;
    }
}
catch(PDOException $e) {  
    echo "I'm sorry, but there was an error updating the database.";  
    file_put_contents('PDOErrors.txt', $e->getMessage(), FILE_APPEND);
}

Ich glaube, dieses Problem ergibt sich aus der Art und Weise, wie ich das Anweisungshandle aufrufe, aber ich bin nicht sicher, welcher Teil meiner Syntax falsch ist. Ist dies auch die beste Möglichkeit, mit solchen Situationen umzugehen? Oder gibt es eine bessere Methode, um mehrere Zeilen in einer Tabelle zu aktualisieren?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage