【问题标题】:Can not call a function while in a mysqli fetch loop在 mysqli fetch 循环中无法调用函数
【发布时间】:2013-09-22 02:22:40
【问题描述】:

这段代码不起作用。

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

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

【问题讨论】:

标签: php mysqli


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    您似乎正在尝试在 $productID 上调用 -&gt;fetch_assoc(),而您正在传递给 smallBlockProduct() 函数。

    我建议检查函数中的 $productID 是什么..

    function smallBlockProduct($productID){
        var_dump($productID);
    ...
    

    【讨论】:

      猜你喜欢
      • 2014-11-19
      • 1970-01-01
      • 2017-11-24
      • 1970-01-01
      • 2021-06-27
      • 1970-01-01
      • 2021-12-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多