2011-09-09 89 views
29

如何知道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語句是成功的,但FALSE時沒有行被實際更新時間返回TRUE

每次UPDATE語句成功執行時,即使它實際上沒有更改任何記錄,我也需要它返回TRUE

回答

38

看一看mysql_affected_rows()

應該告訴你,如果相對於沒有成功更新導致真任何回報竟是更新。

php.net說:

mysql_affected_rows()函數

成功則返回受影響的行數和-1如果最後 查詢失敗。

你可以使用以下方法來達到您想要的結果:

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

我只是再次更新我的問題更清楚地說明,我用mysql_affected_rows遇到的問題()。希望我不會很快發佈我的問題:S – zechdc

+1

我相信JLeafgle的回答仍然正確。如果最後一次查詢失敗,mysql_affected_rows將返回-1,否則將返回> = 0。假設這就是你所追求的,那麼只需將if語句改爲......「if($ this-> db-> affected_rows()> = 0)「 –

+0

你是對的@Jon Stirling。我更新了Jleagle的回答以反映你的建議,但是我不能批准編輯,所以如果別人可以的話,那很好。謝謝! – zechdc

10

那麼你可以使用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 { 

} 
+0

感謝您的回答。你的代碼適用於我的情況,然而,Jleagle的答案在我的代碼中更好一些。 – zechdc

+0

這是否也適用於更高版本的PHP中的PDO對象? –

相關問題