无法将类 mysqli_result 的对象转换为字符串

Object of class mysqli_result could not be converted to string

提问人:Chinmay Chandak 提问时间:2/12/2014 最后编辑:TylerHChinmay Chandak 更新时间:7/12/2022 访问量:275547

问:

我收到错误:

无法将类 mysqli_result 的对象转换为字符串

这是我的代码:

$result = mysqli_query($con, "SELECT classtype FROM learn_users WHERE username='abcde'");

echo "my result <a href='data/$result.php'>My account</a>";
PHP MySQLI

评论

1赞 drew010 10/23/2012
查看mysqli_result的参考资料,它将使您了解如何使用从中返回的对象。mysqli::query()
2赞 Marc B 10/23/2012
您需要先 FETCH 一行数据:php.net/mysqli_fetch_row

答:

2赞 Landon 10/23/2012 #1

该函数返回一个对象,您需要从该函数返回的内容中获取记录。查看此页面上的示例,了解如何从 mysql 打印数据query()

58赞 Shankar Narayana Damodaran 2/12/2014 #2

mysqli_query() 方法将对象资源返回给 $result 变量,而不是字符串。

您需要将其循环起来,然后访问记录。你不能直接把它用作你的变量。$result

while ($row = $result->fetch_assoc()) {
    echo $row['classtype']."<br>";
}

评论

9赞 Andrew 9/22/2014
如果您知道它只有 1 行,您也可以执行 if ($row = $result->fetch_assoc()) {...} 而不是 while。
0赞 hsz 2/12/2014 #3

尝试使用:

$row = mysqli_fetch_assoc($result);
echo "my result <a href='data/" . htmlentities($row['classtype'], ENT_QUOTES, 'UTF-8') . ".php'>My account</a>";
9赞 Chandan Singh Gadhwal 2/12/2014 #4

在使用变量之前,您应该使用 or 函数。$result$row = mysqli_fetch_array($result)mysqli_fetch_assoc()

喜欢这个:

$row = mysqli_fetch_array($result);

并根据需要使用数组。$row

评论

2赞 Funk Forty Niner 8/5/2018
他们在这里使用 mysqli_ 作为 API。MySQL_与此不相容。
5赞 Dharman 7/24/2020 #5

mysqli:query() 返回一个对象,该对象不能序列化为字符串。mysqli_result

您需要从对象中获取结果。这是如何做到的。

如果需要单个值。

从结果中提取一行,然后访问列索引 0 或使用关联键。如果结果中没有行,请使用 null-coalescing 运算符。

$result = $con->query($tourquery);  // or mysqli_query($con, $tourquery);

$tourresult = $result->fetch_array()[0] ?? '';
// OR
$tourresult = $result->fetch_array()['roomprice'] ?? '';

echo '<strong>Per room amount:  </strong>'.$tourresult;

如果您需要多个值。

使用 loop 遍历结果并逐一获取每一行。您可以使用列名作为数组索引来访问每列。foreach

$result = $con->query($tourquery);  // or mysqli_query($con, $tourquery);

foreach($result as $row) {
    echo '<strong>Per room amount:  </strong>'.$row['roomprice'];
}