Advertencia: PDOStatement :: execute (): SQLSTATE [HY093]: Número de parámetro no válido: el parámetro no se definió en ... filetext

$ fields es una matriz que después de la impresión obtiene valores como:

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

Llamo a la función de actualización desde mi clase de datos así:

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

Pero me sale el error:

Advertencia: PDOStatement :: execute (): SQLSTATE [HY093]: Número de parámetro no válido: el parámetro no se definió en ... filetext

He comprobado otros hilos similares, pero creo que me estoy perdiendo algún concepto básico porque todavía no puedo encontrar la respuesta. Hay 7? Y 7 elementos en mi matriz por lo que puedo ver, y si defino todos los valores puedo ejecutarlo perfectamente en el entorno de trabajo SQL, es decir:

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

He intentado la declaración preparada de PDO con el $ user_id establecido en un valor específico y también sin los parámetros de latitud / longitud.

Si he olvidado alguna información crítica, simplemente señálala y la obtendré. la dirección es varchar y lat / long son flotantes en el DB por cierto. Utilizando MYSQL.

La siguiente función:

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

Respuestas a la pregunta(1)

Su respuesta a la pregunta