IM,这是从它的userguide如何查找执行成功与否的查询?用笨2.0.2
$data = array(
'title' => $title,
'name' => $name,
'date' => $date
);
$this->db->where('id', $id);
$this->db->update('mytable', $data);
一次这个执行我的问题,你如何找到它的正确或不执行?
IM,这是从它的userguide如何查找执行成功与否的查询?用笨2.0.2
$data = array(
'title' => $title,
'name' => $name,
'date' => $date
);
$this->db->where('id', $id);
$this->db->update('mytable', $data);
一次这个执行我的问题,你如何找到它的正确或不执行?
的update
函数返回一个值:
$result = $this->db->update('mytable', $data);
检查值为TRUE
(成功)或FALSE
(失败)。 update
运行query
内部,然后返回的query
(Ref)的返回值:
查询()函数返回时,“读”式的查询运行数据库结果的对象,你可以用它来展现你的结果。当“写入”类型的查询运行时,它只是返回TRUE或FALSE,取决于成功或失败。
使用
$this->db->affected_rows()
,看看有多少行已经影响了写类型的查询(UPDATE,INSERT,等等)
ive试过这也可以说,即时尝试更新密码和即时输入相同的密码,而不会改变然后受影响的行返回0 :( –
保持你的大脑编码时开启,如果你没有udpate,那么更新不会影响任何行。该函数按照公布的方式工作,不要成为一个傻瓜,用它作为工具。 – hakre
两个答案都是有效的。你只需要根据情况使用每一个。如果您如果查询被执行使用这种方法只是检查:
$result = $this->db->update('mytable', $data);
如果你真的想要的行数影响了第二种方法比较好:
$this->db->affected_rows()
但是我总是使用第二种方法。更新查询就是一个很好的例子。查询可以成功,但数据库中没有任何更新,因为您试图更新的值实际上等于您在查询中发送的值。
这将是一个误报。和受影响的行将是0. 我希望它有帮助=)
是的,但在这种情况下,你如何发现这是一个误报或不? –
我试着用我的查询“$结果= $ this-> db-> update('users',$ data,array('UserName'=> $ _POST [“UserName”]));“如果用户名不存在于表中,它仍然返回成功 –
如果你想插入而不是更新,那么你应该这样做,否则你可能想要配置你的db,如果你尝试更新一个不存在的行,它会出错。做更新,我如果不存在,则为nsert:http://dev.mysql.com/doc/refman/5.1/en/insert-on-duplicate.html,http://stackoverflow.com/questions/1361340/how-to-insert-if -not-exists-in-mysql – hakre