2014-08-27 19 views
2
$result = mysqli_query($conn,"SELECT * FROM Players"); 
if ($result !== FALSE) { 
    while($row = mysqli_fetch_array($result)) { 
     $result = mysqli_query($conn,"UPDATE Players SET Score='$score' WHERE ID='$id'"); 
    } 
} 

作品。也就是說,數據庫確實更新了,一切都很酷。PHP mysqli_fetch_array據推測得到一個布爾值

但它拋出一個警告:

警告:mysqli_fetch_array()預計參數1被mysqli_result, 布爾給予

如果你搜索周圍的解釋是,查詢失敗 - 因此,它正在返回FALSE,所以您會收到警告。

......但這對我來說沒有意義。查詢不是失敗。當我運行這個腳本時,我的數據庫更新得很好。此外,還有一個條件檢查,如果結果是之前使用mysqli_fetch_array之前的布爾值,所以從技術上講,這個警告不應該發生在第一位。

無論如何,問題必須與$result。讓我們做:

echo gettype($result); 

導致

「對象」

嗯,這解釋了爲什麼是它傳遞的條件。然而,這仍然不能解釋爲什麼mysqli_fetch_array堅持這是一個布爾值(因爲它不是)。

那麼問題是什麼呢?

使用PHP版本5.3.24和5.4.19進行測試。

+2

您使用UPDATE查詢重置'$ result'。這不是結果集。更改變量名稱。 – Rimble 2014-08-27 08:25:02

+0

根據UPDATE查詢的重要性,您不需要在結果集中記錄它,因爲沒有從更新查詢返回結果集。如果您需要知道查詢是否正常工作,請直接在if中查看if:(mysqli_query(...))。你的查詢究竟是試圖完成什麼? – Jhecht 2014-08-27 08:27:24

回答

7

你從你的SELECT查詢與更新查詢新$result值改寫結果集$result你的循環內

while($row = mysqli_fetch_array($result)) { 
    $result2 = mysqli_query($conn,"UPDATE Players SET Score='$score' WHERE ID='$id'"); 
} 
1

的$結果陣列沒有返回,當你正在更新的表。這就是爲什麼,當它試圖從$ result獲取數據到$ row時,你在while循環中得到這個警告。

1

在while循環中使用之前已經使用過的相同變量名'$ result'。更改循環內的變量名稱。

while($ row = mysqli_fetch_array($ result)){ $ result = mysqli_query($ conn,「UPDATE Players SET Score ='$ score'WHERE ID ='$ id'」); }

相關問題