致命错误:在非对象上调用成员函数fetch_array()

时间:2016-04-03 12:42:59

标签: php mysql mysqli

如何更改此代码,以免收到上述错误?

以下是完整错误:

  

致命错误:在第10行/home/bestc165/public_html/opinuo.com/stream.php中的非对象上调用成员函数fetch_array()

<?php 
$link = mysqli_connect('localhost', 'bestc165_opinuo', 'opinuo');

$sql_string = 'SELECT * FROM debates LIMIT 2  order by ts ';

$result = mysqli_query($link,$sql_string );

while($row = $result->fetch_array())
{
    $rows[] = $row;
}

foreach($rows as $row)
{
    $name =  $row['name'];
    $text =  $row['text'];
?>

<h2><?php echo $name;?></h2>
<p><?php echo $text;?></p>

<?php

}

?>

2 个答案:

答案 0 :(得分:1)

LIMIT来自ORDER BY

将您的查询更改为

$sql_string = 'SELECT * FROM debates ORDER BY ts LIMIT 2';

mysqli_query在失败时返回FALSE,因此您的$result不是一个对象,而是一个boolean因此您的错误。

更新

如评论中所述,请确保在连接中传递数据库名称

$link = mysqli_connect('host', 'username', 'password', 'databaseName');

或使用mysqli_select_db

mysqli_select_db($link, "databaseName");

答案 1 :(得分:0)

使用此:

//Other code here

$result = mysqli_query($link, $sql_string );

while($row = mysqli_fetch_assoc($result))
{

?>

    <h2><?php echo $row['name'];?></h2>
    <p><?php echo $row['text'];?></p>

<?php

}

?>

无需使用额外的loop来显示输出。