このコードは機能しません。
$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>';
}
}
では、既に別のクエリを実行しているときに、別のクエリを実行することはできませんか?