2013-03-03 60 views
-2

我不斷收到錯誤消息:錯誤消息:)mysqli_fetch_array(預計參數1

Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in 

我已經試過所有我能想到的,以使它消失,但似乎沒有任何工作。任何幫助?

<?php 
$query = "SELECT * FROM table WHERE today = 'No' AND number_of_addresses < 26 ORDER BY table_id DESC" ; 
$result = mysqli_query($dbc, $query) or die("Error: ".mysqli_error($dbc)) ; 
$number = mysqli_num_rows($result) ; 

if ($number >= 1) { 

    while ($row = mysqli_fetch_array($result, MYSQLI_BOTH)) { 
     //Do stuff 
    } 

} 
?> 
+0

您是否打開了數據庫連接? – rinchik 2013-03-03 00:35:18

+0

你可以添加'//做東西嗎? – hek2mgl 2013-03-03 00:35:20

+0

@rinchik是的,我連接到數據庫。我只是簡化了代碼。 – three3 2013-03-03 00:36:14

回答

1

您應該在MySQL命令行或通過SQL客戶端(如Navicat Lite)測試您的查詢。至於PHP,我推薦使用面向對象的風格。比程序風格更容易工作。 (http://www.php.net/manual/en/mysqli.query.php)。

但是,對於您的num_rows檢查,我建議使用「if(!empty($ number))」,以防萬一它返回FALSE或其他錯誤。 (http://www.php.net/manual/en/mysqli-result.num-rows.php

您不需要在fetch_array函數中指定第二個參數,因爲您使用的值是默認值。我會將您的代碼更改爲...

$mysqli = new mysqli("localhost", "my_user", "my_password", "world"); 
$sql = "SELECT * FROM table WHERE today = 'No' AND number_of_addresses < 26 ORDER BY table_id DESC"; 
$result = $mysqli->query($sql); 

if (is_object($result) && !empty($result->num_rows)) { 
    while ($row = $result->fetch_array()) { 
    //Do stuff 
    } 
} 
相關問題