Aviso: PDOStatement :: execute (): SQLSTATE [HY093]: Número do parâmetro inválido: o parâmetro não foi definido em… filetext

$ fields é uma matriz que, após a impressão, recebe valores como:

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

Eu chamo a função de atualização do meu dataclass da seguinte forma:

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

Mas eu recebo o erro:

Aviso: PDOStatement :: execute (): SQLSTATE [HY093]: Número do parâmetro inválido: o parâmetro não foi definido em ... filetext

Eu verifiquei vários outros tópicos semelhantes, mas eu acho que estou perdendo algum conceito básico aqui, porque eu ainda não consigo encontrar a resposta. Existem 7 e 7 itens em minha matriz, até onde eu posso ver, e se eu definir todos os valores, posso executá-lo perfeitamente no ambiente de trabalho do SQL, por exemplo:

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

Eu tentei a instrução preparada PDO com o $ user_id definido para um valor específico e também sem os parâmetros de latitude / longitude.

Se eu esqueci alguma informação crítica, simplesmente aponte-a e eu a conseguirei. endereço é varchar e lat / long são flutuantes no banco de dados. Usando MYSQL.

A função abaixo:

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