2013-08-02 61 views
0

以下有問題的代碼始終記錄affected_rows爲0.我檢查我的數據庫,該行每次都會更新正確。爲什麼是0?MySql affected_rows始終爲0,但UPDATE工作

public static function updateNextRunTime($nextRunTime) 
    { 
     $mysqli = new mysqli(GDB_HOST, GDB_USERNAME, GDB_PASSWORD, GDB_NAME); 

     if ($mysqli->connect_errno) 
     { 
      throw new Exception('DB Connection Failed. Error Code: ' . $mysqli->connect_errno); 
     } 

     $cmd = $mysqli->prepare("UPDATE balanceagent SET NextRunTime = ? WHERE Id = 1"); 
     if (!$cmd) 
     { 
      throw new Exception($mysqli->error); 
     } 

     $cmd->bind_param('s', $nextRunTime); 
     $cmd->execute(); 

     $rows = $mysqli->affected_rows; 

     $cmd->close(); 
     $mysqli->close(); 

     if ($rows != 1) 
     { 
      logToFile("Balance Agent Error - Failed to update the next run time! - Affected rows: " . $rows); 
     } 
    } 

回答

1

準備語句,你應該使用mysqli_stmt::affected_rows形式:

$cmd->bind_param('s', $nextRunTime); 
$cmd->execute(); 

$rows = $cmd->affected_rows; 
1

你應該檢查的 $cmd->affected_rows; 代替 $mysqli->affected_rows;

+0

我都試過。我把它放回$ cmd,並且仍然得到affected_rows == 0。 –

+1

是你在'$ cmd-> close();之前記錄它嗎? $ mysqli->接近(); '? – DanielX2010