首页 > 解决方案 > 在 laravel 中使用基本更新查询时出错

问题描述

我正在尝试运行 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 Genre_id = 2 其中 anm_id = 4)

它在手动给出列名时起作用。

它不应该在变量的情况下也起作用吗?

标签: phpsqllaravellaravel-5

解决方案


尝试使用此查询,

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

或者

DB::table('animes')
            ->where($cond, $condval)
            ->update([$col_name =>DB::raw($value)]);

推荐阅读