如何在 CodeIgniter 中获取活动记录插入的结果

Posted

技术标签:

【中文标题】如何在 CodeIgniter 中获取活动记录插入的结果【英文标题】:how to get the result of active record insert in CodeIgniter 【发布时间】:2012-06-21 02:25:06 【问题描述】:

我在 CodeIgniter 中使用活动记录。 我可以成功地将数据插入数据库。 但是insert sql失败时如何获取结果呢? 现在它返回一个关于 sql 错误的 html。 我不想要这个 html 内容。

编辑

$data = array(
   'title' => 'My title' ,
   'name' => 'My Name' ,
   'date' => 'My date'
);

$this->db->insert('mytable', $data); 

简单的代码。但是当“名称”列具有唯一属性时。我正在向它插入一个重复的值。它返回 sql 错误的 html 内容。

我只是希望它返回错误代码而不是输出html内容。

【问题讨论】:

到目前为止你写了什么代码?你想完成什么:你想得到一个查询被执行的消息,你想返回你刚刚在数据库中输入的值还是你想摆脱一个 SQL 错误? 嗯,这就是模型,没有错。你的控制器和视图是什么样的? 好诗 :) (我还需要 3 个字符才能去......) 【参考方案1】:

要不收到 DB 错误消息,请确保您在文件 /application/config/database.php 中有 $db['default']['db_debug'] = FALSE

然后,在您执行(尝试)插入后,您可以运行:

$num_inserts = $this->db->affected_rows();

如果结果为 0,则插入失败,您可以显示自己选择的错误消息。

【讨论】:

我不知道之前的情况,但 $this->db->affected_rows() 实际上在失败时返回 -1(插入后)。如果更新查询后没有更新任何行,则返回 0。【参考方案2】:

使用这些功能

$errNo   = $this->db->_error_number();
$errMess = $this->db->_error_message();

他们会帮忙

【讨论】:

你少了一个 ';'在第一行的末尾。

以上是关于如何在 CodeIgniter 中获取活动记录插入的结果的主要内容,如果未能解决你的问题,请参考以下文章

如何在codeigniter活动记录中获取特定数组

在codeigniter中插入活动记录数据库

CodeIgniter - 如果新的或更新的重复记录则插入活动记录

Codeigniter 活动记录 - 插入点列

如何从 codeigniter 活动记录中的 DATETIME 字段中获取 d-m-Y 格式的日期?

Codeigniter 活动记录从 mysql 获取记录,其中 id 等于数组中的记录