Ostrzeżenie: PDOStatement :: execute (): SQLSTATE [HY093]: Nieprawidłowy numer parametru: parametr nie został zdefiniowany w… filetext

$ pola to tablica, która po wydrukowaniu otrzymuje wartości takie jak:

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

Wywoływam funkcję aktualizacji z mojej klasy danych w następujący sposób:

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

Ale mam błąd:

Ostrzeżenie: PDOStatement :: execute (): SQLSTATE [HY093]: Nieprawidłowy numer parametru: parametr nie został zdefiniowany w ... filetext

Sprawdziłem kilka innych podobnych wątków, ale myślę, że brakuje mi tutaj jakiejś podstawowej koncepcji, ponieważ wciąż nie mogę znaleźć odpowiedzi. W mojej tablicy jest 7 i 7 pozycji, a jeśli zdefiniuję wszystkie wartości, mogę je uruchomić idealnie w środowisku roboczym SQL, tj .:

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

Próbowałem przygotowanej instrukcji PDO zarówno z ustawieniem $ user_id na określoną wartość, jak i bez parametrów szerokości / długości geograficznej.

Jeśli zapomniałem o jakiejkolwiek krytycznej informacji, po prostu wskaż to i dostanę. adres jest varchar, a lat / long są zmiennymi w DB btw. Korzystanie z MYSQL.

Poniższa funkcja:

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;
}

questionAnswers(1)

yourAnswerToTheQuestion