【问题标题】:How to fix "SQLSTATE[42S22]: Column not found: 1054 Unknown column '0' in 'field list'"如何修复“SQLSTATE [42S22]:找不到列:1054 '字段列表'中的未知列 '0'”
【发布时间】:2021-01-03 05:35:44
【问题描述】:

我正在尝试制作一个表单来编辑数据库中特定项目的数据。当我提交时,我收到此错误:

 SQLSTATE[42S22]: Column not found: 1054 Unknown column '0' in 'field list' (SQL: update `items` set `0` = Title, `1` = ? where `ID` = 2)

这是表单重定向的方式:

<form action="{{ url('updateItem/'.$item->ID)}}" method="post" id="updateForm">

控制器中的功能:

public function updateItem($id, Request $request)
{
    $Title = $request->input('Title');
    $Kool = $request->input('Koolhydraten');
    $Vet = $request->input('Vet');
    $Eiwitten = $request->input('Eiwitten');
    $Suikers = $request->input('Suikers');

    Item::where('ID', $id)
        ->update(['Title', $Title])
        ->update(['Koolhydraten', $Kool])
        ->update(['Vet', $Vet])
        ->update(['Eiwitten', $Eiwitten])
        ->update(['Suikers', $Suikers]);
    return redirect('/');
}

【问题讨论】:

    标签: mysql laravel


    【解决方案1】:

    修改您的更新查询

    Item::where('ID', $id)
            ->update(['Title'=> $Title,'Koolhydraten'=>$Kool,'Vet'=> $Vet,'Eiwitten' => $Eiwitten,'Suikers'=> $Suikers]);
    

    【讨论】:

      【解决方案2】:

      您需要使用带有键值对的数组作为update() 参数。 key 需要和你要更新的列名相同,value 就是要更新的值。

      当您执行 -&gt;update(['Title', $Title]) 时,此 ['Title', $Title] 算作数组的 2 个元素,相当于:

      [0 => 'Title', 1 => $Title]
      

      键将分别为 0 和 1。因此,为什么错误显示它找不到第 0 列。

      正确的查询应该是:

      Item::where('ID', $id)->update([
          'Title'        => $Title,
          'Koolhydraten' => $Kool,
          'Vet'          => $Vet,
          'Eiwitten'     => $Eiwitten,
          'Suikers'      => $Suikers
      ]);
      
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-08-06
        • 2019-05-28
        • 1970-01-01
        • 2015-01-19
        • 1970-01-01
        • 1970-01-01
        • 2019-10-14
        • 2021-10-31
        相关资源
        最近更新 更多