Php 警告:mysqli_fetch_assoc()希望参数1是mysqli_结果,数组在

Php 警告:mysqli_fetch_assoc()希望参数1是mysqli_结果,数组在,php,mysqli,Php,Mysqli,“警告:mysqli_fetch_assoc()期望参数1是mysqli_result,数组在”代码段外“中给出 “searchcar.php” 下面是选择函数“database.php”的代码片段 public function select( $table, $fields = '*', $where = '1=1', $order = '', $limit = '', $desc = fals

“警告:mysqli_fetch_assoc()期望参数1是mysqli_result,数组在”代码段外“中给出 “searchcar.php”

下面是选择函数“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;
    }    
我想使用这行“while($row=mysqli\u fetch\u assoc($result))” 请指教

使用mysqli_error()

返回上一个MySQL操作中的错误消息文本

从MySQL命令行或phpMyAdmin之类的工具运行查询。 如果查询中有语法错误,这将告诉您它是什么 是

确保你的报价是正确的。查询或查询周围缺少引号 值可能导致查询失败

确保你正在逃避你的价值观。查询中的引号可能导致 查询将失败(并且会使您面临SQL注入)。使用 mysql\u real\u escape\u string()用于转义输入


您的
select
方法返回的是
数组
,而不是
资源
。这意味着
mysqli\u fetch\u assoc
有权投诉

好消息是,
select
方法返回一个结果数组,这意味着您可以在($row=mysqli\u fetch\u assoc($result))时将
替换为

foreach($result as $row)
select()
方法清楚地执行查询,然后返回结果数组。为什么您希望能够(甚至需要)获取该数组并再次对其执行
mysqli\u fetch\u 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注入的攻击。

什么打印var\u dump($result)?您的
select()
回调已经使用
mysqli\u fetch\u assoc
收集了一个数组。为什么您认为以后需要再次调用它?var_dump($result)返回数组(0){}“mario”,而不是如何处理此情况请更正我是oop编程的新手谢谢Mike和所有人我的问题解决了
$modelmake = $_POST['model_make'];
$result = $db->select('car_information','*', 'Model_Make LIKE \'%$modelmake%\''); 
foreach ($result as $row)
    echo 'Model'.$row['model_make'];
}