Php 使用Codeigniter更新DB表中的字段状态

Php 使用Codeigniter更新DB表中的字段状态,php,mysql,database,codeigniter,codeigniter-3,Php,Mysql,Database,Codeigniter,Codeigniter 3,我想将“尚未”状态更新为“已” 有错误 A Database Error Occurred Error Number: 1054 Unknown column 'sudah' in 'field list' UPDATE `tb_peserta` SET `sudah` = '' WHERE `no_pendaftaran` = '13' Filename: C:/xampp/htdocs/codeigniter/system/database/DB_driver.php Line Number

我想将“尚未”状态更新为“已”

有错误

A Database Error Occurred
Error Number: 1054
Unknown column 'sudah' in 'field list'
UPDATE `tb_peserta` SET `sudah` = '' WHERE `no_pendaftaran` = '13'
Filename: C:/xampp/htdocs/codeigniter/system/database/DB_driver.php
Line Number: 691
function status_verifikasi($no_pendaftaran){
    $where = array('no_pendaftaran' => $no_pendaftaran);
    $this->M_pendaftar->status_verifikasi($where,'tb_peserta');
    redirect('admin/Ca_pendaftar');}
我的控制器

A Database Error Occurred
Error Number: 1054
Unknown column 'sudah' in 'field list'
UPDATE `tb_peserta` SET `sudah` = '' WHERE `no_pendaftaran` = '13'
Filename: C:/xampp/htdocs/codeigniter/system/database/DB_driver.php
Line Number: 691
function status_verifikasi($no_pendaftaran){
    $where = array('no_pendaftaran' => $no_pendaftaran);
    $this->M_pendaftar->status_verifikasi($where,'tb_peserta');
    redirect('admin/Ca_pendaftar');}
我的型号

function status_verifikasi($where,$tb_peserta){
    if ($status_verifikasi ='belum') {
       $this->db->set('sudah');
   } else{
       $this->db->set('belum');
   }
   $this->db->where($where);
   $this->db->update($tb_peserta);}
我的观点

<?=anchor('admin/Ca_pendaftar/status_verifikasi/'.$tb_peserta->no_pendaftaran,
              'Konfirmasi', ['class'=>'btn btn-success btn-sm' , 'onclick'=>"return confirm('Ubah status pendaftar ?');"])?>
$this->db->set('sudah')

应该是

$this->db->set('sudah','value')

还有一个问题

//您使用了赋值运算符而不是比较运算符

if($status\u-verifikasi='belum'){

应该是

$this->db->set('column_name','value');

if($status\u-verifikasi=='belum'){
Codeigniter
Set
语法应为

$this->db->set('column_name','value');
注意:Equal
=
是赋值运算符。要进行比较,需要使用
=
比较运算符

if ($status_verifikasi == 'belum') { .. }
更新1:

您需要像这样使用select查询检查以前的值,然后需要根据以前的值更新状态

function status_verifikasi($where,$tb_peserta){

     $this->db->select('status_verifikasi');
     $this->db->from($tb_peserta);
     $this->db->where($where);
     $result = $this->db->get()->result();

    if($result && $result[0]->status_verifikasi =='belum')
    {
       $this->db->set('status_verifikasi','sudah');
    } else{
       $this->db->set('status_verifikasi','belum');
    }

    $this->db->where($where);
    $this->db->update($tb_peserta);
}

set语法应该是$this->db->set('column_name','value');您缺少了一个相等的$status\u-verifikasi='belum'还有什么是
$status\u-verifikasi
??if:status\u-verifikasi($where,$tb\u-peserta){if($status\u-verifikasi='belum'){$this->db->set($status\u-verifikasi='sudah')}否则{this->db->set($status_-verifikasi='belum');}$this->db->where($where);$this->db->update($tb_-peserta);}因此,出现了类似数据库错误的错误号:1054“字段列表”更新中的未知列“sudah”。php行号:691类似于此?状态验证($WHERE,$tb\peserta){if($this->db->set('status_-verifikasi','sudah');}else($this->db->set('status_-verifikasi','belum');}$this->db->where($where);$this->db->update($tb_-peserta);}它的工作,对于“尚未”到“已经”,但是,如果对于“已经”到“尚未”的帮助,则不起作用。我的意思是,我希望能够将状态从“尚未”更改为“已经”,并从“已经”更改为“尚未”$status\u verifikasi='belum'使用==@EkaWahyuSholeha$status\u verifikasi从何处获得此变量?@EkaWahyuSholeha$status\u verifikasi是colu的名字比如:status_-verifikasi($where,$tb_-peserta){if($status_-verifikasi='belum'){$this->db->set('status_-verifikasi','sudah');}else{$this->db->where($where);$this->db->update($tb-peserta)}{status_-verifikasi($where,$tb peserta){if($this->db->set('status_-verifikasi','sudah');}else($this->db->set('status_-verifikasi','belum');}$this->db->where($where);$this->db->update($tb_-peserta);}这可以工作,但只有一个会话,如果我想再次更改,这不起作用:(我不明白,你想说什么?如果很难解释,我很抱歉,因为我的英语不流利。我的意思是,状态默认值是“belum”,如果学生已经确认,状态将更改为“sudah”,如果你实现了我回答中提到的两个更改,那么状态将更改为“sudah”。