0

这段代码是行不通的。

$queryProduct = $mysqli->prepare("SELECT productID FROM products WHERE productCat=?");
$queryProduct->bind_param('i', $id);
$queryProduct->execute();
$queryProduct->bind_result($productID);
while ($queryProduct->fetch()) 
{
smallBlockProduct($productID);
}
$queryProduct->close();

这给了我在调用 smallBlockProduct 的行上的错误“致命错误:在非对象中调用成员函数 fetch_assoc()”。

但是,如果我将函数 smallBlockProduct 更改为简单的 echo $productID; 它将遍历所有正确的结果。

我不能在 mysqli fetch 循环中调用函数吗?或者有没有一种特殊的方式来调用一个函数?

编辑:

错误实际上是在我正在调用的函数上。该函数执行另一个查询。

function smallBlockProduct($productID)
   {    
    global $mysqli;

    $query = "SELECT productName FROM products WHERE productID='$productID'";
    $result = $mysqli->query($query);
    while ($row = $result->fetch_assoc())
        {
        $productName = $row['productName'];
        echo $productName.'<br>';
        }
    }

那么现在,我不能在另一个查询中执行不同的查询吗?

4

2 回答 2

2

看起来您正在尝试调用您->fetch_assoc()正在$productID传递给smallBlockProduct()函数的内容。

我建议检查$productID函数中的内容..

function smallBlockProduct($productID){
    var_dump($productID);
...
于 2013-09-22T02:26:16.527 回答
2

对此作出回应:那么现在,我不能在另一个查询中执行不同的查询吗?

您不能使用相同的数据库连接来执行第二个查询而不丢失第一个查询。要运行第二个查询,您需要打开另一个连接。

于 2013-09-22T03:21:38.747 回答