2013-07-23 111 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注入。

相关问题