2013-07-23 115 views
-1

我收到此錯誤「警告:mysqli_fetch_assoc()期望參數1爲mysqli_result,數組中給出的代碼片段爲 」searchcar.php「警告:mysqli_fetch_assoc()期望參數1爲mysqli_result,給出的數組爲

$modelmake = $_POST['model_make']; 
$result = $db->select('car_information','*', 'Model_Make LIKE \'%$modelmake%\''); 
while($row = mysqli_fetch_assoc($result)) 
{ 
    echo 'Model'.$row['model_make']; 
} 

這裏是代碼片段來自 「database.php中的」 選擇功能

public function select(
     $table, 
     $fields = '*', 
     $where = '1=1', 
     $order = '', 
     $limit = '', 
     $desc = false, 
     $limitBegin = 0, 
     $groupby = null, 
     $monitoring = false 
    ) //monitoring is set to true to view the actual query 
    { 
// $query ='SELECT ' . $fields . ' FROM ' . $table ; 
    $query = 'SELECT ' . $fields . ' FROM ' . $table . ' WHERE ' . $where; 

     if (!empty($groupby)) { 
      $query .= ' GROUP BY ' . $groupby; 
     } 

     if (!empty($order)) 
     { 
      $query .= ' ORDER BY ' . $order; 

      if ($desc) 
      { 
       $query .= ' DESC'; 
      } 
     } 

     if (!empty($limit)) 
     { 
      $query .= ' LIMIT ' . $limitBegin . ', ' . $limit; 
     } 

     $result = $this->_sendQuery($query); 

     $resultArray = array(); 

     while ($row = mysqli_fetch_assoc($result)) 
     { 
      $resultArray[] = $row; 
     } 

     if ($monitoring) 
     {  
      // If monitoring is activated, echo the query 
      echo $query; 
     } 
     return $resultArray; 
    }  

我想用這條線 「而($行= mysqli_fetch_assoc($結果))」 請指教!

+0

什麼打印var_dump($結果)? –

+0

您的'select()'回調已經使用'mysqli_fetch_assoc'收集了一個數組。你爲什麼認爲你需要再次調用它? – mario

回答

0

使用mysqli_error()http://www.php.net/manual/en/mysqli.errno.php

返回錯誤信息的一個MySQL操作文本

mysqli_fetch_array()/mysqli_fetch_assoc()/mysqli_fetch_row() expects parameter 1 to be resource or mysqli_result, boolean given

運行在MySQL命令行或工具查詢像phpMyAdmin。 如果您的查詢中有語法錯誤,則會告訴您它是什麼 。

確保您的報價是正確的。對查詢或值的缺失報價可能導致查詢失敗。

確保你逃脫你的價值觀。查詢中的引號可能會導致查詢失敗(並且也使您打開SQL注入) 。使用 mysql_real_escape_string()來轉義您的輸入。

+0

var_dump($ result)返回數組(0){} 「馬里奧」比如何解決這種情況,請更正我是一個新手來進行編程 – Hassan

+0

感謝邁克和大家我的問題解決 – Hassan

5

您的select方法返回array而不是resource。這意味着mysqli_fetch_assoc是正確的抱怨。

可喜的是,該select方法返回結果的陣列,這意味着可以用

foreach($result as $row) 
1

select()方法清楚地執行查詢替換while($row = mysqli_fetch_assoc($result)),然後返回結果的數組。你爲什麼期望能夠(或者甚至需要)接受該陣列並再次對其執行mysqli_fetch_assoc()

我想你可以遍歷直接在$result這樣的:

$modelmake = $_POST['model_make']; 
$result = $db->select('car_information','*', 'Model_Make LIKE \'%$modelmake%\''); 
foreach ($result as $row) 
    echo 'Model'.$row['model_make']; 
} 

還應該指出的是,你的代碼很容易受到SQL注入。

相關問題