@Iossarian

В чем ошибка обновления записи в БД?

Следующий код на обновление выдает ошибку: Fatal error: Uncaught PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE id = ?' at line 1 in D:\OP\OSPanel\domains\bot\db.php:24 Stack trace: #0 D:\OP\OSPanel\domains\bot\db.php(24): PDO->prepare('UPDATE posts SE...') #1 D:\OP\OSPanel\domains\bot\update.php(62): connection->prepare('UPDATE posts SE...', Array)

$data = $_POST;
$getId = $_GET['id'];

$values = [
    'title' => $data['title'],
    'description' => $data['description'],
    'text' => $data['text'],
    'author_id' => $_SESSION['user']['id'],
    'id' => $getId
];

$sqlUp = "UPDATE posts SET title = :title, description = :description, text = :text, date = NOW(), author_id = :author_id WHERE WHERE id = :id";
$result = $db->prepare($sqlUp, $values);

Метод :
public function prepare($sql, $values) {
        $sth = $this->connect()->prepare($sql);
        $result = $sth->execute($values);
        return $result;
    }

Я так понимаю, значение $getId после нажатия на кнопку сбрасывается и запросу неоткуда брать id записи, но такая же ошибка возникает и при явном указание айдишника.
Пробовал сессии
$_SESSION['getId'] = $_GET['id'];
$getId = $_SESSION['getId'];
  • Вопрос задан
  • 80 просмотров
Пригласить эксперта
Ответы на вопрос 2
@akdes
author_id = :author_id WHERE WHERE id = :id"

дважды WHERE

айди сессии пихать в инпут крайней не безопасно, да и необходимости в этом в принципе нет. Ибо тогда сессия не нужна, если Вы идентификатор хотите держать у клиента... Похоже на попытку работы Stateless используя states (session) :D
Ответ написан
@Iossarian Автор вопроса
Решил сохранение айди через скрытый инпут в форме вывода информации редактируемой записи.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы