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

これに応えて:だから今、別のクエリを実行している間に別のクエリを実行することはできませんか?

最初のクエリを失うことなく、同じデータベース接続を使用して 2 番目のクエリを実行することはできません。2 番目のクエリを実行するには、別の接続を開く必要があります。

于 2013-09-22T03:21:38.747 に答える