首先,我非常是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'")));
我已经尝试了很多不同的查询变量方法等等,因为到目前为止,以不同的方式重写代码总能解决我的问题。
答案 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,并使用PDO或MySQLi - 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
)。