Warnung: PDOStatement :: execute (): SQLSTATE [HY093]: Ungültige Parameternummer: Parameter wurde in… Dateitext nicht definiert

$ fields ist ein Array, das nach dem Drucken Werte wie folgt erhält:

Array ( [first_name] => Nisse [last_name] => Example [ssn] => 198306205053 [address] =>           Stockholm, Sverige [phone_number] => 54654987321546 [latitude] => 55.717089999999999 [longitude] => 13.235379 )

Ich rufe die Update-Funktion von meiner Datenklasse folgendermaßen auf:

DataManager::update_user($fields, $user_data['id'];

Aber ich bekomme den Fehler:

Warnung: PDOStatement :: execute (): SQLSTATE [HY093]: Ungültige Parameternummer: Parameter wurde in ... Dateitext nicht definiert

Ich habe einige andere ähnliche Themen überprüft, aber ich vermisse hier ein grundlegendes Konzept, da ich die Antwort immer noch nicht finden kann. Mein Array enthält 7? Und 7 Elemente, so weit ich sehen kann. Wenn ich alle Werte definiere, kann ich es perfekt in der SQL Workbench ausführen, d. H .:

UPDATE users SET first_name = 'Kalle', last_name = 'Anka', ssn = 242345234, address = 'Stockholm', phone_number = 53423434, latitude = 17.189889231223423423424324234, longitude = 109.234234 WHERE id = 4

Ich habe die PDO-vorbereitete Anweisung sowohl mit der auf einen bestimmten Wert gesetzten $ user_id als auch ohne die Breiten- / Längenparameter ausprobiert.

Wenn ich wichtige Informationen vergessen habe, machen Sie mich darauf aufmerksam und ich werde sie erhalten. adresse ist varchar und lat / long sind floats in der db btw. MYSQL verwenden.

Die funktion unten:

public static function update_user($fields, $user_id)
{
    $db = self::_connect();

    $st = $db->prepare("UPDATE users SET first_name = ?, last_name = ?, ssn = ?, address = ?, phone_number = ?, latitude = ?, longitude = ? WHERE id = '{$user_id}'");
    $st->execute($fields);

    return ($st->rowCount()) ? true : false;
}

Antworten auf die Frage(1)

Ihre Antwort auf die Frage