एक MySQL कनेक्शन में, आप उस समय केवल एक ही क्वेरी के साथ काम कर सकते हैं। आप एक साथ और स्टेटमेंट तैयार कर सकते हैं (ये डेटा अभी भी MySQLi ड्राइवर में रखा जाता है), हालाँकि, एक बार जब आप एक्ज़ीक्यूट () का उपयोग करते हैं, तो स्टेटमेंट डेटाबेस को भेज दिया जाएगा और डेटाबेस भविष्य के सभी बाइंड_परम () और बाइंड_रिज़ल्ट () अनुरोधों की अपेक्षा करेगा। वही कथन, जब तक आप नया विवरण नहीं भेजते।
एक ही समय में दो कथन => DB के लिए दो कनेक्शन => दो mysqli ऑब्जेक्ट।
साथ ही आपकी समस्या को एक ही प्रश्न में हल किया जा सकता है जैसे:
$stmt1 = $sql1->prepare ('SELECT o.orderid,o.date,b.product,b.price FROM orders o LEFT JOIN orderlines b ON b.orderid=o.orderid ORDER BY o.orderid');
$stmt1->execute();
$stmt1->bind_result($orderid,$date,$product,$price);
$prev_order_id=false;
while ($stmt1->fetch())
{
if($prev_order_id!=$orderid)
{
if($prev_order_id!==false)
echo "End of order " . $prev_orderid."<br>";
echo "Order ID: " . $orderid . " from date: " . $date . ":<br>";
}
if(is_null($product))
echo "Product from order is: " . $product . " and costs " . $price . "<br>";
$prev_order_id=$orderid;
}
if($prev_order_id!==false)
echo "End of order " . $prev_orderid."<br>";
$stmt1->close();
$sql1->close();