请解释CodeIgniter ActiveRecord集合()更新()

xmakbtuz  于 2022-12-07  发布在  其他
关注(0)|答案(3)|浏览(135)

我似乎在用户指南中找不到明确的解释。
在CodeIgniter Active记录中,若要更新数据表数据列,似乎需要执行三件事:(1)确定要更新的记录,(2)定义需要更改的内容,以及(3)提交更改。
不知怎的,不管我怎么看手册,就是弄不清楚。https://www.codeigniter.com/userguide2/database/active_record.html#update
它似乎暗示“set”是关于插入的--这意味着在我的书中向表中添加行。
而“更新”是关于“改变”现有信息。
对我来说唯一有效的方法是同时做这三个动作。
就像这样:

$this->db->where('id',$userid);         //selecting the right user
$this->db->set($SubscriptionChoices);   //setting the new values to be written
$this->db->update('userprefs');         //Do it. Update table userprefs
qcuzuvrc

qcuzuvrc1#

所以你所说的“set”--它只是你正在更新的特定字段和你正在使用的值。就像从一个简单的表单更新一个名称

$updatedata = array(
        'first' => $this->input->post( 'first', TRUE ),
        'last' => $this->input->post( 'last', TRUE ),
        'statuscheck' => 'Name updated' 
        );

然后将该数据和记录ID传递给一个方法以进行更新

function update( $id, $updatedata ) {

    $this->db->where( 'id', $id );
    $this->db->update( 'yourtablename', $updatedata );

    if ( $this->db->affected_rows() == '1' ) {return TRUE;}

    else {return FALSE;}

} //

注意一个小的恼人的细节-如果你更新一个记录-用相同的信息-像在这个例子中,如果有人更新了记录,但名字和姓氏是相同的-那么它将返回'false' -因为什么都没有更新。
所以如果在更新数组中包含一个字段,比如日期时间秒,它总是不同的,那么就不会有这个问题。

kyvafyod

kyvafyod2#

现在有点晚了,但其他人可以得到帮助。
您也可以在单个函数中使用它。

$updatedata = array(
    'first' => $this->input->post( 'first', TRUE ),
    'last' => $this->input->post( 'last', TRUE ),
    'statuscheck' => 'Name updated' 
    );

function update( $id, $updatedata ) {

    $where = array( 'id' => $id );

    $this->db->update( 'yourtablename', $updatedata , $where);

    if ( $this->db->affected_rows() == '1' ) {return TRUE;}

    else {return FALSE;}
} //

但是,您也可以使用提供CRUD功能的以下类来代替它。
https://github.com/avenirer/CodeIgniter-MY_Model

9q78igpj

9q78igpj3#

这将通过使用ci.模型零件中的set进行更新。

  • 示例 *:
public function change_province_value()
{
    $this->db->where('customer_zone',0);         
    $this->db->set('customer_zone',NULL);  
    $query = $this->db->update('customer');
    return $query;
}

相关问题