可捕获的致命错误:类mysqli的对象无法转换为字符串

时间:2014-06-17 17:14:38

标签: php mysql mysqli

请帮帮我。 我看到错误: 可捕获的致命错误:类mysqli的对象无法转换为

中的字符串

来自代码

<?php
include 'koneksi.php';
$konek = mysqli_query('SELECT * FROM member ORDER By id ASC');
if ($konek){
    echo 'Could not run query :' .mysqli_error();
    exit;
}
while ($row=mysqli_fetch_array($konek)){
    echo (' $row[0] | $row [1] | $row[2] <br/>');
}
?>

3 个答案:

答案 0 :(得分:4)

您的代码从根本上被打破了:

mysqli希望将其连接句柄作为第一个参数,但是你要传递一个查询字符串:

$konek = mysqli_query('SELECT * FROM member ORDER By id ASC');

应该是:

$konek = mysqli_query($database_handle, 'SELECT ...');

然后有:

if ($konek){

mysqli在失败时返回布尔值false,或者在成功时返回语句句柄。你需要做

if (!$konek)

测试该错误,否则语句句柄将始终评估为&#34; true&#34;并错误地输出错误通知。

带有'引号的PHP字符串 NOT 扩展变量值:

echo (' $row[0] | $row [1] | $row[2] <br/>');

因此,此代码将输出$ro等...,而不是这些变量的内容。您需要使用"引号instad:

echo ("$row[0] | $row [1] | $row[2] <br/>");

然后是$row [1]。注意那里的空间。 PHP将为此输出以下内容:

Array [1]

因为空间&#34;打破&#34;你的数组引用。所以总的来说,你需要

 echo (" $row[0] | $row[1] | $row[2] <br/>");

请注意echo不是函数,您不需要在其参数周围使用()

答案 1 :(得分:1)

实际上您的错误是由于您传递的是string而不是conn变量。

请参阅:http://us3.php.net/manual/en/mysqli.query.php

mixed mysqli_query ( mysqli $link , string $query [, int $resultmode = MYSQLI_STORE_RESULT ] )

您正在将查询而不是$link传递给mysqli连接。你需要通过两个:

$konek = mysqli_query($YOUR_LINK, 'SELECT * FROM member ORDER By id ASC');

此外,您还有许多其他答案所涵盖的错误。

答案 2 :(得分:0)

您的代码是向后的

$konek = mysqli_query('SELECT * FROM member ORDER By id ASC');
if ($konek){

因此,如果$konek成功,则会抛出错误。试试这个

if(!$konek) {