我正在使用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);
所以如果您对如何解决这个问题有任何想法,请告诉我。我真的很感激。
提前致谢!
答案 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;
}