确定 CodeIgniter 更新查询是否成功影响任何行

问题描述 投票:0回答:2

如何判断 MySQL UPDATE 何时成功以及实际更新的数据?

示例:

TABLE
id    city_name
1     Union
2     Marthasville

如果我运行以下命令:

$data = array('city_name', 'Marthasville');

//update record 2 from Marthasville to the same thing, Marthasville. 
$this->db->where('id', 2);
$this->db->update('table', $data);

if($this->db->affected_rows() > 0)
{
    //I need it to return TRUE when the MySQL was successful even if nothing was actually updated.
    return TRUE;
}else{
    return FALSE;
}

每次 UPDATE 语句成功时,都会返回

TRUE
,但当实际没有更新行时,会返回 FALSE。

每次成功执行 UPDATE 语句时,我都需要它返回

TRUE
,即使它实际上没有更改任何记录。

php codeigniter sql-update rows-affected
2个回答
49
投票

看看 mysql_affected_rows()

它应该告诉您是否有任何内容实际更新,而不是没有成功更新导致返回 true。

php.net 说:

mysql_affected_rows()

成功时返回受影响的行数,如果最后一个则返回-1 查询失败。

您可以使用以下方法来达到您想要的结果:

if($this->db->affected_rows() >= 0){ }

18
投票

然后你会使用mysql_query

SQL语句,INSERT、UPDATE、DELETE、DROP等,mysql_query() 成功时返回 TRUE,错误时返回 FALSE。

就这么简单:

$result = $this->db->update('table', $data);

if($result)
{
     //without error even no row updated
} else {

}
© www.soinside.com 2019 - 2024. All rights reserved.