【问题标题】:Trying to get property of non-object in PDO试图在 PDO 中获取非对象的属性
【发布时间】:2015-06-13 15:46:35
【问题描述】:

首先我知道这可能是一个重复的问题,但我做了一些搜索,例如 this question,但我不明白它是如何工作的。

我有这个代码...

<?php
$host       = "localhost";
$user       = "root";
$pass       = "Passw0rd";
$database   = "test";

$db = new PDO("mysql:host={$host};dbname={$database}", $user, $pass);
$stmt = $db->prepare("SELECT * FROM patient WHERE fname LIKE :q OR lname LIKE :q");
$stmt->bindValue(':q', '%'.$_GET['q'].'%');
$stmt->execute();

while ( $row = $stmt->fetch() ) {
    echo '<a href="members2.php?view=' . $row->id . '" target="_blank">' . $row->fname . ' ' . $row->lname . '</a><br/>';
}
?>

我得到了这个错误

Trying to get property of non-object in E:\xampp\htdocs\ptixiaki\livesearch.php on line 13

第 13 行就是这一行……​​

echo '<a href="members2.php?view=' . $row->id . '" target="_blank">' . $row->fname . ' ' . $row->lname . '</a><br/>';

你能帮我解决这个问题吗

【问题讨论】:

  • 您可能希望使用fetchObject() 而不是fetch(),否则您会得到一个数组,而不是一个对象。
  • @ClémentMalet 谢谢你修复了一些问题,但现在我得到了这个Notice: Undefined property: stdClass::$id in E:\xampp\htdocs\ptixiaki\livesearch.php on line 13
  • 试试$result = $sth-&gt;fetch(PDO::FETCH_BOTH);print_r($result);看看返回的结果是什么。
  • @ClémentMalet 我修复了第二个错误。写下您的第一条评论作为答案以接受它
  • 正如@ClémentMalet 所说,使用fetchObject() 可以让你做到这一点$row-&gt;idfetch() 你可以做到这一点$row['id']

标签: php pdo


【解决方案1】:

您必须使用fetchObject() 而不是常规的fetch() 来指定要将行视为对象(并使用其属性),而不是数组。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-09
    相关资源
    最近更新 更多