【问题标题】:Codeigniter: Unknown column 'stud.id' in 'where clause'Codeigniter:“where 子句”中的未知列“stud.id”
【发布时间】:2020-09-14 07:08:52
【问题描述】:

我遇到错误“'where 子句'中的未知列'stud.id'。我的文件和数据库中都没有任何 stud.id。你认为这有什么问题?我' m 使用 Codeigniter 4。

以下是我的控制器上的代码:

    $model = new Mod_Stud();
    $id = $this->request->getVar('stud_id');

    $data = [
                'stud_id' => $this->request->getVar('stud_id'),
                'lname' => $this->request->getVar('lname'),
                'fname' => $this->request->getVar('fname'),
                'mname' => $this->request->getVar('mname'),
    ];

    $save = $model->update($id,$data);
    return redirect()->to( base_url('/') );

我的模型的代码:

    protected $table = 'stud';
    protected $allowedFields = ['stud_id', 'sy', 'dpt', 'grd', 'lname', 'fname', 'mname', 'gender', 'bday', 'birthplace', 'religion', 'nationality', 'country', 'address', 'f_name', 'f_occ', 'm_name', 'm_occ', 'g_name', 'g_rel', 'created_at', 'updated_at'];

我已经修好了!

以下是我使用的代码。

$model->set($data);
$model->where('stud_id', $id);
$model->update();

【问题讨论】:

  • $id的值是多少?
  • @reignsly 我检查了它,它是 stud_id。
  • 请用您的型号代码编辑您的问题
  • @Vickel 我已经编辑过了。请帮帮我。

标签: php codeigniter codeigniter-4


【解决方案1】:

unknown-column-stud-id-in-where-clause :- 这个错误是由于数据库引起的......因为使用的 id 列在数据库上不可用或者它不正确......让我们假设我有我的数据库表中的 3 列 "ID" 、 "Name" 、 "NO"

所以如果需要选择“ID”,我必须使用关键字“ID”,如果我使用“id”而不是“ID”,则会发生此错误(unknown-column-stud-id-in-where-clause) .请检查您的数据库列并将它们复制粘贴到您需要选择的 where 子句中。

【讨论】:

  • 我的数据库中只有一个 id,不,名称。这里的列名:stud_nostud_idsydptgrdlnamefnamemnamegenderbday1、@87654330@3 987654332@,nationality,country,address,f_name,f_occ,m_name,m_occ,g_name,g_name,g_rel,g_rel,g_rel,`update_ats
  • 这里的问题是由于下划线符号尝试首先替换它。下划线用点(。)这就是为什么 stud_id 用 stud.id 替换所以当你尝试运行查询查询生成器时尝试查找stud.id 而不是 stud_id。尝试更改列名
【解决方案2】:

这可能会有所帮助,

protected $primaryKey = 'stud_id';

从受保护的 $allowedFields 中删除 stud_id

【讨论】:

    【解决方案3】:

    在 cmets 之后更新:

    你的 update() 函数中有错误的参数序列,应该是

    $save = $model->update($data, ['id' => $id]);

    Updating Data

    此答案假定您正确加载了 query builder

    【讨论】:

    • 不可能是同样的错误,如果你删除了数组条目'stud_id';我们不知道´$id = $this->request->getVar('stud_id');´,因为您还没有向我们展示... idf 它是一个数组,您应该$save = $model->update($data, $id);
    • 如何显示?对不起,我只是一个初学者。我使用 var_dump 来显示 stud_id 的值,它显示了我要更新的 stud_id,然后我也将它用于 $data,它显示了该特定 id 的所有数据。但是当我要使用 $save = $model->update($data, ['id' => $id]);它显示错误。
    • 您是否阅读了我回答中的链接?它说:你会注意到 $builder->where() 函数的使用,使你能够设置 WHERE 子句。您可以选择将此信息作为字符串直接传递给更新函数: $builder->update($data, "id = 4");或者作为一个数组: $builder->update($data, ['id' => $id]);
    • 顺便说一句:你写 我的文件和数据库中都没有任何 stud.id。那么你想如何更新它(如你上面的评论)?如果它不存在?
    • 我使用的列名是“stud_id”,而不是“stud.id”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-03
    • 1970-01-01
    相关资源
    最近更新 更多