Search code examples
phpmysqlpdofetch

Fatal error: Uncaught Error: Call to a member function fetch() on string


Unable to resolve the error. I'm getting two different errors

  1. Fatal error: Uncaught Error: Call to a member function fetch() on string
  2. Error: Call to a member function fetch() on string

Code:

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';
}

Solution

  • It's probably rather alike that:

    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();