Предупреждение: PDOStatement :: execute (): SQLSTATE [HY093]: недопустимый номер параметра: параметр не был определен в… filetext

$ fields - это массив, который после печати получает такие значения, как:

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

Я вызываю функцию обновления из моего класса данных следующим образом:

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

Но я получаю ошибку:

Предупреждение: PDOStatement :: execute (): SQLSTATE [HY093]: недопустимый номер параметра: параметр не был определен в ... filetext

Я проверил несколько других подобных тем, но я думаю, что мне не хватает какой-то базовой концепции, потому что я до сих пор не могу найти ответ. Насколько я вижу, в моем массиве 7? И 7 элементов, и если я определю все значения, я смогу отлично выполнить его в рабочей среде SQL, т.е.

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

Я пробовал подготовленный оператор PDO как с $ user_id, установленным на определенное значение, так и без параметров широты / долготы.

Если я забыл какую-либо важную информацию, просто укажите на нее, и я ее получу. адрес - это varchar, а lat / long - это значения в БД. Используя MYSQL.

Функция ниже:

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

Ответы на вопрос(1)

Ваш ответ на вопрос