致命错误:不能使用mysqli_result类型的对象作为数组

时间:2016-07-15 05:13:11

标签: php mysql

我试图从我的数据库表tbl_newpage获取结果,但它会抛出错误。我不知道为什么会抛出错误

以下一行

   $page = $mysqli->real_escape_string($_GET['page']);

   $result=array();

   if($stmt = $mysqli->prepare("select * from tbl_newpage where name=?")){

     $stmt->bind_param("s", $page);

     $stmt->execute();

     $result = $stmt->get_result();

     while($row = $result->fetch_array()){

       $result[] = array($row); //This is where the error appears 
                echo "hello ";print_r($row);die();

     }

     $objSmarty->assign("result", $result);
   }

引发错误

致命错误:无法在第22行的/var/www/html/examplesite/phpfile.php中使用mysqli_result类型的对象作为数组

2 个答案:

答案 0 :(得分:3)

您对$result的结果以及您正在获取的值数组使用相同的变量$stmt->get_result()。所以在循环的第二次迭代中,当它完成时

$row = $result->fetch_array()

$result不再包含mysqli结果,它包含数组,您无法在数组上调用fetch_array()。为它们使用不同的变量名称。

$output = array();
while ($row = $result->fetch_array()) {
    $output[] = $row;
}
$objSmarty->assign("result", $output);

此外,$row已经是一个数组,在将其推送到$output数组之前,您可能不希望将其嵌套在另一个数组中。

答案 1 :(得分:2)

尝试将最终result更改为finalResult

 $page = $mysqli->real_escape_string($_GET['page']);

 $finalResult=array();

 if($stmt = $mysqli->prepare("select * from tbl_newpage where name=?")){

 $stmt->bind_param("s", $page);

 $stmt->execute();

 $result = $stmt->get_result();

 while($row = $result->fetch_array()){

   $finalResult[] = array($row);
            echo "hello ";print_r($row);die();

 }

 $objSmarty->assign("result", $finalResult);
 }