【发布时间】:2013-01-21 03:59:23
【问题描述】:
单独使用 MySQL - 如果我对这样的表进行基本更新:
UPDATE `SOMETABLE` SET `NAME` = 'John' WHERE `ID` = 1;
NAME = 'John' 的值已经是 'John' - 换句话说 - 没有什么是新的,没有什么可更新的。 MySQL 返回“受影响的行:0(查询耗时 0.0007 秒)”
如果我进行相同的调用 - 现在使用 CodeIgniter - 然后像这样检索受影响的行:
$data = array(
'NAME' => 'John'
);
$this->db->where('ID', 1);
$this->db->update('SOMETABLE', $data);
$affect = $this->db->affected_rows();
echo $affect; // $affect echos 1
$affect 最终等于 1。 我对此没有问题——我只是希望如果没有什么要更新的——codeigniter 的行为方式与 MySQL 相同,并且不会编辑不需要更新的内容,并为受影响的行()返回 0。
- 我是不是搞错了?
- codeigniter 是否覆盖了“John”?还是不行?
【问题讨论】:
-
只是好奇:为什么将 ID 作为字符串传递?
-
根据您的发现,我想知道负载是什么(我意识到这样一个基本查询为零)。显然,MySQL 正在访问数据库,基本上是在进行选择以查看是否需要更新,然后在需要时进行更新。而 CI 只是进行更新。我假设选择比更新更快/更少资源密集型。好问题。 1-up
-
我的坏 - @Dwight 在这里提出的建议 $this->db->last_query();导致我发现我的错误。我添加了时间戳日期(DATE_RFC822)
标签: mysql codeigniter rows-affected