2015-04-28 94 views
0

我有這樣的代碼mysqli_stmt_affected_rows不起作用的更新準備的語句

$SQL = "UPDATE cart SET a = ? WHERE b = ? AND c = ?"; 

      if($stmt2 = mysqli_prepare($conn, $SQL)){ 
         mysqli_stmt_bind_param($stmt2, "iii", $a1, $b1, $c1); 
         mysqli_stmt_execute($stmt2); 

       if(mysqli_affected_rows($conn)){ 
        echo "updated"; 
        mysqli_stmt_close($stmt2); 
       } 
       else 
        echo "nope"; 
      } 

我搞清楚爲什麼上面的代碼不會起作用。我已經調試過我知道的每一種方式。

最後我刪除if條件。不知何故,它正在工作。試圖在網上瀏覽找出原因,但沒有發現。有人可以向我解釋爲什麼會發生這種情況? 我是mysqli的新手。真的需要幫助:)謝謝!

+0

在打開'<?php'標記'error_reporting(E_ALL)後立即向文件頂部添加錯誤報告; ini_set('display_errors',1);'你是否在做任何錯誤檢查?你確定你連接? 'mysqli_affected_rows($ conn)'將返回一個零或一個數字,並且*將始終爲真*。你應該測試一個正整數來知道更新是否發生。 –

+0

將'echo「nope」'更改爲'echo mysqli_error($ conn)',以便查看if if失敗的原因。 – Barmar

+0

更改....使用對象的整個代碼。 – Devon

回答

1

您應該使用

mysqli_stmt_affected_rows($stmt2); 

mysqli_stmt :: $ affected_rows - mysqli_stmt_affected_rows - 返回行的總數量改變,刪除或最後執行的語句

插入

而不是

mysqli_affected_rows($conn); 

這是用於普通的查詢執行。

Manual

編輯

我只注意到你的問題標題中提到的功能名稱,代碼使用錯誤一個