我使用codeigniter 2.0.2,这是从它的用户指南
$data = array(
'title' => $title,
'name' => $name,
'date' => $date
);
$this->db->where('id', $id);
$this->db->update('mytable', $data);
我的问题是,一旦执行了这个,你如何发现它执行得正确与否?
4条答案
按热度按时间7lrncoxx1#
update
函数返回一个值:检查该值是
TRUE
(成功)还是FALSE
(失败)。update
在内部运行query
,然后返回query
的返回值(Ref):query()函数会在执行“读取”类型查询时传回一个数据库结果对象,您可以用它来显示您的结果。当执行“写入”类型查询时,它只会根据成功或失败传回TRUE或FALSE。
w41d8nur2#
用途
查看写入类型查询(更新、插入等)影响了多少行
http://codeigniter.com/user_guide/database/helpers.html
vxbzzdmp3#
两个答案都有效。您只需要根据情况使用每个答案。如果您只是检查查询是否已执行,请使用此方法:
如果你真的想让行数受到影响,第二种方法更好:
但是我总是使用第二种方法。更新查询就是一个很好的例子。一个查询可以成功,但数据库中仍然没有更新任何内容,因为您试图更新的值实际上等于您在查询中发送的值。
这将是一个假阳性。并且受影响的行将是0。我希望它有帮助=)
4szc88ey4#
在开发CodeIgniter模型方法时,我发现根据所执行的数据库写入类型,我始终返回所需的值。区分成功运行的查询和实际更改了记录的查询通常很重要。
对于更新或删除查询,我将返回受影响的行数--这对调用它的控制器方法非常有帮助。如果您正在执行日志记录(以跟踪更改历史),那么只在行发生更改时记录一些内容;否则您将不必要地增加更改历史日志。
对于插入查询,我总是通过
insert_id()
返回新插入行的自动递增的id。如果将PDO驱动程序与PostgreSQL一起使用,或者使用Interbase驱动程序,则此函数需要$name参数,该参数指定检查插入id的适当序列。
在模型方法中使用一致的返回类型将使项目更易于开发和维护。调用这些模型方法的脚本将能够通过进行“错误”检查来快速评估结果。