web-dev-qa-db-ja.com

MySQLのUPDATEが実際に更新されたデータに対して成功したことをどのように確認できますか?

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を返す必要があります。

33
zechdc

mysql_affected_rows() をご覧ください

何も正常に更新されずにtrueが返されるのではなく、実際に何かが更新されたかどうかを通知する必要があります。

php.netのコメント:

mysql_affected_rows()

成功すると影響を受ける行の数を返し、最後のクエリが失敗した場合は-1を返します。

以下を使用して、目的の結果を得ることができます。

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

次に、 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 {

}
13
lnguyen55