【问题标题】:PHP/MYSQL Error : Object of class mysqli_result could not be converted to string [duplicate]PHP / MYSQL错误:类mysqli_result的对象无法转换为字符串[重复]
【发布时间】:2019-03-19 02:22:15
【问题描述】:

我刚刚开始学习 mySQL 和 PHP(基础),现在我被这个错误困住了 2 天。 我有 HTML 代码:

<html>
<head>
    <title>Title</title>
</head>
<body>
    <?php include 'pehape.php' ?>
<span>Username:</span><?php echo $var ?>
</body>
</html>

我只是想使用以下代码从数据库中获取用户名:

<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "database";



$conn = new mysqli($servername, $username, $password, $dbname);

$var = $conn->query("SELECT Name FROM users WHERE ID=0");

?>

这是我在网络浏览器中得到的结果。

Username:
Recoverable fatal error: Object of class mysqli_result could not be converted to string in /storage/ssd3/749/7441749/public_html/index.php on line 7

现在我得到的结果是 Object 但我不知道如何使用 PHP 将其转换为字符串。 - 有谁知道如何解决这个问题?将对象转换为字符串。

我尝试过使用 print_r 函数,但它对我没有用。我发现关于这个的信息很少。另外,如果你需要它来获取一些信息,这是我的数据库结构(我想这可能会产生影响,不要'不知道):http://prntscr.com/l5xu9n

【问题讨论】:

  • $var 是一个数组,但您像字符串一样威胁它。 echo 不适用于数组。试试echo $var['Name']
  • @TK 和支持者!不,不是!
  • 是的,我的错。没有正确阅读文档。

标签: php string object mysqli


【解决方案1】:

您代码中的$var 实际上是mysqli_result 类型的对象。

这实际上是一个结果集的句柄,您必须使用某种fetch 从该句柄中卸载结果。

<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "database";

$conn = new mysqli($servername, $username, $password, $dbname);

// dont normally get ID's of zero so I chnaged this to 1
$result = $conn->query("SELECT Name FROM users WHERE ID=1");

// now get the result row
$row = $result->fetch_assoc();     // row will be an array

?>

现在您可以在 HTML 中执行此操作

<html>
<head>
    <title>Title</title>
</head>
<body>
    <?php include 'pehape.php' ?>
<span>Username:</span><?php echo $row['Name'];?>
</body>
</html>

【讨论】:

  • 它有效。还有一个问题,每次我想从数据库中检索值时我都必须这样做,还是因为某种特殊原因?
  • 每个涉及SELECTquery() 都会创建一个结果集。您总是必须以某种方式在查询之后获取行。
【解决方案2】:

你应该像这样获取你的结果:

<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "database";

$conn = new mysqli($servername, $username, $password, $dbname);

if($result = $conn->query("SELECT Name FROM users WHERE ID=0")) {
    $var = $result->fetch_object();
    $result->close();
}
?>

然后在你的 HTML 中:

<html>
<head>
    <title>Title</title>
</head>
<body>
    <?php include 'pehape.php' ?>
<span>Username:</span><?php echo $var->Name ?>
</body>
</html>

查看文档:http://php.net/manual/pt_BR/mysqli-result.fetch-object.php

【讨论】:

    猜你喜欢
    • 2014-03-31
    • 2016-06-17
    • 2021-07-06
    • 2022-01-05
    • 2015-05-15
    相关资源
    最近更新 更多