如何在 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 - 如果新的或更新的重复记录则插入活动记录