我的代码返回以下错误:
注意:尝试在第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';
}
?>
答案 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
了解更多信息