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

时间:2014-04-21 09:25:53

标签: php

首先,我非常是PHP的新手,而我的英语有时并不那么好,所以我已经为你们可能要做的猜测而道歉。

我得到的错误是:

  

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

我的代码是:

mysql_connect("nope.com","nope","nope") or die ("Verbindung zur Datenbank konnte nicht hergestellt werden");
mysql_select_db("nope") or die ("Datenbank konnte nicht verbunden werden");
$nnamenow = $_SESSION['username']; 
echo(mysql_fetch_object(mysql_query("SELECT Name FROM USER WHERE Username LIKE '$nnamenow'")));

我已经尝试了很多不同的查询变量方法等等,因为到目前为止,以不同的方式重写代码总能解决我的问题。

4 个答案:

答案 0 :(得分:1)

该错误非常明确,您正在尝试回复某个对象。

$result = mysql_fetch_object(mysql_query("SELECT Name FROM USER WHERE Username LIKE '$nnamenow'"));
var_dump($result); // echo $result->Name;

Waring: Please, don't use mysql_* functions in new code。它们不再被维护and are officially deprecated。请参阅red box?转而了解prepared statements,并使用PDOMySQLi - this article将帮助您确定哪个。如果您选择PDO here is a good tutorial

答案 1 :(得分:1)

mysql_fetch_object会返回对象。然后尝试echo所述对象。你不能echo一个对象,它会产生你看到的错误。您只能echo所述对象的属性。:

$obj = mysql_fetch_object(...);
echo $obj->Name;

您还应该为代码添加更多错误处理,并且最重要的是停止使用mysql_函数;他们被弃用了。并非所有事情都必须是单行。

答案 2 :(得分:1)

尝试将查询结果保存到变量,如

$result = mysql_query("SELECT Name FROM USER WHERE Username LIKE '$nnamenow'");

然后你可以按行迭代

while($row = mysql_fetch_assoc($result)) {
    echo $row['Name'];
}

因为这个querty可以返回多行:)

答案 3 :(得分:0)

在PHP中,您无法回显数组或对象。好吧,对于对象,这并不完全正确,因为您可以实现__toString()方法,它允许您在需要将对象转换为字符串时管理如何显示对象。

在您的情况下,您的对象是StdClass的实例,因此它无法正常工作。您需要循环显示每个字段,或单独显示每个字段(例如$result->Name)。