试图获取非对象的属性“消息”

时间:2018-03-24 19:15:28

标签: php

我的代码返回以下错误:

  

注意:尝试在第11行的C:\ xampp \ htdocs \ mysqlsample.php中获取非对象的属性“消息”

我需要更改才能让它正常工作?

<?php 

try {
    $handler = new PDO('mysql:host=127.0.0.1;dbname=group_projectdb','root','');
} catch (Exception $e) {
    echo $e->getMessage();
    die();
}
$query = $handler->query('SELECT * FROM security');
while ($r = $query->fetch()) {
    echo $r->message,'<br';
}
?>

4 个答案:

答案 0 :(得分:3)

由于错误显示您正在访问非对象,请尝试:

echo $r['message'];

PDOStatement::fetch()以关联数组或带编号的数组或两者检索结果。

答案 1 :(得分:0)

您正在使用返回数组的$query->fetch(),但您将其用作对象$r->message。 将其用作数组$r['message'],或者如果您更喜欢使用对象,则更改为$query->fetchObject()

答案 2 :(得分:0)

你可以使用fetch并获取一个对象,但你还没有完成它。 2种方式:

//这次你需要它

while ($r = $query->fetch(PDO::FETCH_OBJ)) {

//如果您每次或大部分时间都将此作为对象使用

try {
    $handler = new PDO('mysql:host=127.0.0.1;dbname=group_projectdb','root','');
    $handler->setAttribute(PDO::FETCH_OBJ);
} ...
//rest is the same, you use $query->fetch() and get an object

答案 3 :(得分:0)

您尝试使用$ r-&gt;消息尝试获取作为对象的价值,但在获取记录时您没有设置获取模式。
如果您希望获得价值然后你必须在对象中设置提取模式 使用$ query-&gt; fetch(PDO :: FETCH_OBJ)或$ query-&gt; fetchObject()
阅读PHP Manual 了解更多信息