可恢复的致命错误:PDOStatement类的对象无法转换为字符串PHP错误消息

时间:2018-02-16 14:33:30

标签: php oop mysqli

我正在使用PHP OOP和MySQL创建在线商店。在这个项目中,我创建了一个页面,商店的管理员可以看到商店的所有类别,并按类别查看产品数量。

所以为了制作这个页面我编码了这个:

$catSet = new Products();
$catShow = $catSet->GetCatp(0,10);
foreach($catShow as $cat){ 
    $nums = $catSet->NumCatProduct($cat['cat_title']);
    echo "
        <tr>
        <td>".$cat['table_id']."</td>
        <td>".$cat['cat_title']." ($nums)</td>
        <td><a href='categorydelete.php?cat_id=".$cat['cat_id']."'><span class='label label-danger'>REMOVE</span></a></td>
        </tr>";
}

NumCatProduct方法如下:

public function NumCatProduct($cat)
{
    $cat = $this->db->prepare("SELECT * FROM products WHERE product_category = ?");
    $cat->bindParam(1,$cat);
    $cat->execute();
    $row_cat = $cat->rowCount();
    return $row_cat;
}

但问题是每当我运行这个时我都会收到此错误:

  

可恢复的致命错误:PDOStatement类的对象无法在Product.class.php中转换为字符串等

它主要针对这一行:

$cat->bindParam(1,$cat);

所以如果您对如何解决这个问题有任何想法,请告诉我。我真的很感激。

提前致谢!

1 个答案:

答案 0 :(得分:0)

您将PDOStatement分配给$cat(第1行),然后尝试将其用作查询的字符串参数(第2行)。要解决你只需要使用两个不同的变量:

public function NumCatProduct($cat)
{
    $res = $this->db->prepare("SELECT * FROM products WHERE product_category = ?");
    $res->bindParam(1,$cat);
    $res->execute();
    $row_cat = $res->rowCount();
    return $row_cat;
}