在我的PHP INSERT/UPDATE代碼中,我一直在用一個相當基本的概念掙扎。我應該在每次INSERT/UPDATE後總是檢查受影響的行數,因爲在絕大多數情況下,我只執行一次INSERT/UPDATE,並且通過檢查只有一行受到影響,似乎會導致更多問題。PHP mysql_affected_rows()我應該關心嗎?
下面是執行INSERT/UPDATE的標準代碼,如果用戶更新記錄而不更改任何內容,因爲受影響的行將爲0,則此代碼失敗。我可以編寫代碼來檢查是否至少有一個字段已更改但在大型表格上,這看起來非常笨重,並且想知道它是否真的值得,因爲我從來沒有真正通過檢查這個號碼來發現任何錯誤。
<?php
$whereSql = '';
$groupSql = 'INSERT INTO';
if(isset($_POST['id']) && is_numeric($_POST['id'])){
$groupSql = 'UPDATE';
$whereSql = 'WHERE id = ' . $_POST['id'];
}
$groupSql .= ' sometable SET name="' . $name . '" ' . $whereSql;
$groupDb = mysqli_query($groupSql, $dbObject) or die("Login DB error:".mysql_error());
if(mysqli_affected_rows($dbObject) == 1){
//redirect
}else{
die('System Error');
}
-0.49在2013年使用'mysql_query'。 – cHao 2013-03-20 14:30:10
爲什麼不打印錯誤if mysql_affected_rows($ dbObject)== -1。從手動 - >返回成功時受影響的行數,如果最後一次查詢失敗,則返回-1。 – 2013-03-20 14:30:24
@cHao這是傳統代碼 – 2013-03-20 14:30:35