Не работает update, но $_POST с этими данными отправляется

Есть форма для редактирования данных пользователя. Исходные данные в нее передаются и читаются. Вот запрос для чтения:
private $select_data = 'select id_reg, name_reg, password, email, tel_num, fk_con_reg, city from registr_data, contacts where id_reg = ? and id_reg=fk_con_reg';

var_dump такой:

array (size=7)
  'id_reg' => string '84' (length=2)
  'name_reg' => string 'Аркадий' (length=14)
  'password' => string '$2y$10$E18G4qDaEJnDh..Z2NUEKOOKWTP67Wuy4NFXH3sVPxqV5tv3eaCPm' (length=60)
  'email' => string '[email protected]' (length=13)
  'tel_num' => string '(33)123-45-67' (length=13)
  'fk_con_reg' => string '84' (length=2)
  'city' => string 'Витебск' (length=14)

Запрос для update:
private $update_data = 'update registr_data, contacts set name_reg=?, email=?, password=?, city=?, tel_num=? where id_reg=? and id_reg=fk_con_reg';

var_dump (чтобы поймать POST, намеренно не введен ном.телефона):

array (size=6)
  'id_reg' => string '84' (length=2)
  'name_reg' => string 'Аркадий' (length=14)
  'email' => string '[email protected]' (length=18)
  'password' => string 'AAA111aaa' (length=9)
  'city' => string 'Минск' (length=10)
  'tel_num' => string '' (length=0)

Т.е. данные передаются, но в самой БД не меняются.

Код для БД:

public static function select($sql, $parameters = null) {
    $pdostmt = self::$pdo->prepare($sql);
    $pdostmt->execute($parameters);
    return $pdostmt->fetchAll(\PDO::FETCH_ASSOC);
}

public static function exec($sql, $parameters = null) {
    $pdostmt = self::$pdo->prepare($sql);
    return $pdostmt->execute($parameters);
}

Вот сама функция:

public function update()
    {
        if ($_SERVER['REQUEST_METHOD'] == 'POST') {//проверка данных и запись в базу
            if ($this->validate()) {
                
                \Core\Db::exec($this->update_data, [htmlspecialchars($this->data['name_reg']),
                    htmlspecialchars($this->data['email']), 
                    password_hash($this->data['password'], PASSWORD_DEFAULT),
                    $this->data['city'], htmlspecialchars($this->data['tel_num']), $this->data['id_reg']]);
            }
        } else {//Чтение данных для редактирования
            $user = \Model\Session::getUserId();
            $this->data['id_reg'] = $user;
            $data = \Core\Db::select($this->select_data, [$this->data['id_reg']]);
            $this->data = $data[0];
        }
    }

Также в функции validate() есть проверка на if ($_POST['update']).

К слову, insert, delete запросы, как и select, с БД работают. Буду благодарна любой помощи!


Ответы (1 шт):

Автор решения: Sliva

Ошибка заключается в запросе. Смотрите синтаксис SQL.

UPDATE table_name SET pole_name=? WHERE pole_name=?
→ Ссылка