【问题标题】:Fatal error: Uncaught Error: Call to a member function fetch() on string致命错误:未捕获的错误:调用字符串上的成员函数 fetch()
【发布时间】:2021-03-18 22:29:56
【问题描述】:

无法解决错误。我收到两个不同的错误

  1. 致命错误:未捕获错误:调用字符串上的成员函数 fetch()
  2. 错误:调用字符串上的成员函数 fetch()

代码:

if (isset($_POST["query"])) {
    $search = $_POST["query"];
    $query = $dbh->prepare("SELECT * FROM `tbl_product` WHERE `name` LIKE :search;");
    $query->bindValue(':search','%'.$search.'%');
    $query->execute();
} else {
    $query = "SELECT * FROM tbl_product ORDER BY id";
}

//if($query->rowCount() > 0) ---- this also doesn't work
if($query) {
    while($row = $query->fetch(PDO::FETCH_ASSOC)) {
        $output .= 'TEST';
    }
    echo $output;
} else {
    echo 'Data Not Found';
}

【问题讨论】:

  • $query = "SELECT * FROM ... 如果代码遵循此路径,则 $query 是一个字符串,因此会出现错误。 else 子句的想法是什么……您打算在某个时候执行该查询吗?
  • 我想要这样的东西......当用户搜索产品时,它应该得到匹配项目的列表,否则不应该显示任何内容。
  • 解决了谢谢:)

标签: php mysql pdo fetch


【解决方案1】:

大概是这样的:

if (isset($_POST["query"])) {
    $search = $_POST["query"];
    $query = $dbh->prepare("SELECT * FROM `tbl_product` WHERE `name` LIKE :search;");
    $query->bindValue(':search','%'.$search.'%');

} else {
    /* not overwriting variable $query with a SQL string in here: */
    $query = $dbh->prepare("SELECT * FROM tbl_product ORDER BY id;"); "";
}
$query->execute();

【讨论】:

  • 这行得通,谢谢。由于这是用于实时搜索,默认 div 包含页面上的所有产品,而不是在输入之后。
猜你喜欢
  • 2016-10-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-14
  • 1970-01-01
  • 2018-09-10
  • 2022-01-20
  • 1970-01-01
  • 2023-03-15
相关资源
最近更新 更多