Ошибка в использовании базового запроса на обновление в laravel - PullRequest
2 голосов
/ 15 июня 2019

Я пытаюсь запустить следующий код, который находится на сервере innoDB, чтобы обновить значение таблицы, используя базовую форму запроса. но он продолжает показывать ошибку.

if(isset($_POST['col_opt']) &&
    isset($_POST['val1']) &&
    isset($_POST['where_opt']) &&
    isset($_POST['val2']) 
){
    $col_name = $_POST['col_opt'];
    $nvalue = $_POST['val1'];
    $cond = $_POST['where_opt'];
    $condval = $_POST['val2'];

    DB::update("UPDATE animes SET ? = ? Where ? = ?",
        [$col_name, $nvalue, $cond, $condval]);

sql получает значение всех переменных. Но это все еще показывает ошибку:

SQLSTATE [42000]: синтаксическая ошибка или нарушение доступа: 1064

У вас есть ошибка в вашем синтаксисе SQL; проверьте руководство, которое соответствует вашему Версия сервера MariaDB для правильного синтаксиса для использования рядом с '? знак равно Куда ? знак равно в строке 1 (SQL: ОБНОВЛЕНИЕ аниме SET SET genre_id = 2, где anm_id = 4)

работает, когда имена столбцов задаются вручную.

Разве это не должно работать и в случае переменных?

1 Ответ

0 голосов
/ 15 июня 2019

Попробуйте использовать этот запрос,

DB::update("UPDATE animes SET ? = '%?%' Where ? = '%?%' ",
        [$col_name, $nvalue, $cond, $condval]);

OR

DB::table('animes')
            ->where($cond, $condval)
            ->update([$col_name =>DB::raw($value)]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...