CodeIgniter update()默认为insert()

Pat*_*ick 4 codeigniter sql-update

这是可能/真的吗?

例如,如果我想更新id为1的行,但不存在行,那么此函数(更新函数)是否会自动插入具有给定数据的新行?是否有一个参数来启用它?

如果没有,那么处理这个问题的最佳方法是什么(如果可能的话),而不使用单独的函数来评估表,如果行存在则返回bool.(然后从那里更新或插入)

没有太大的问题..只是寻找澄清,并想知道是否有人知道这一点.

Zac*_*ack 8

我在这个链接中找到了一个很好的解决方案,我希望如果有人仍在寻找codeigniter中的解决方案,它会有所帮助:

$sql = 'INSERT INTO menu_sub (id, name, desc, misc)
        VALUES (?, ?, ?, ?)
        ON DUPLICATE KEY UPDATE 
            name=VALUES(name), 
            desc=VALUES(desc), 
            misc=VALUES(misc)';

$query = $this->db->query($sql, array( $id, 
                                       $this->validation->name, 
                                       $this->validation->desc, 
                                       $this->validation->misc
                                      ));  
Run Code Online (Sandbox Code Playgroud)


dak*_*dad 5

也许您正在寻找的是INSERT ... ON DUPLICATE KEY UPDATE- 如果您使用的是MySQL而且您id的桌面上有一个独特的密钥.

您必须手动构造查询并传递给$this->db->query()函数,而不是像DB驱动程序的辅助函数那样的任何内置活动记录.