qw150986416 发表于 2010-8-23 09:45:43

关于$this->db->affected_rows()获取影响行数的问题

问题描述:我做了一个update更新,更新成功后想确定更新数据成功所以用到了CI的 $this->db->affected_rows();
代码如下
$where = array('id' => $id, 'doctor_id' => $mid);
$data = array('is_open' => $request);
$this->db->update('mytabel',$data,$where);
//↑以上的更新操作是执行成功的 然后我想判断是否更新成功
if ($this->db->affected_rows() > 0){
   echo '更新成功!';
}else {
echo '更新失败!'; // 结果程序老是执行到失败这里来了
}

在手册查过 但是我对手册上的解释很懵懂 希望各位遇到过或者知道原因的CI高手给解释一下 {:2_39:}

Hex 发表于 2010-8-23 10:04:37

你确定你 update 了数据了吗?
这是影响的行数,如果你数据和以前一样,则没有影响的行数。

visvoy 发表于 2010-8-23 10:09:17

更新表拼写错了吧,mytabel?mytable?
更新失败了当然没有affrows

qw150986416 发表于 2010-8-23 10:13:54

回复 2# Hex 我确定更新成功了,每次我都对照数据库看了的

qw150986416 发表于 2010-8-23 10:14:51

回复 3# visvoy 这个是我手误 只是想表达下那里面放的是表名 :$

qw150986416 发表于 2010-8-23 10:31:30

回复 6# Hex :funk:

qw150986416 发表于 2010-8-23 11:36:14

以后大家一定记住用正确的编程规范 ,CI对编程规范比较严格,不然和我一样报出些莫名其妙的错误就头大了。希望大家引以为戒

rovern 发表于 2010-9-17 17:15:01

我也遇见过,还在纠结中。。。
$this->db->insert(); 插入数据使用$this->db->affected_rows();可以得到影响的行数
$this->db->update(); 却返回得到的始终是FALSE

Hex 发表于 2010-9-17 18:17:49

当使用 UPDATE 查询,MySQL 不会将原值和新值一样的列更新。这样使得 affected_rows() 函数返回值不一定就是查询条件所符合的记录数,只有真正被修改的记录数才会被返回。

sunxch100 发表于 2010-9-28 13:23:28

只有数据改变的时候才返回大于0的值。
页: [1] 2
查看完整版本: 关于$this->db->affected_rows()获取影响行数的问题