Dalam satu koneksi MySQL, Anda hanya dapat bekerja dengan satu kueri dalam satu waktu. Anda dapat menyiapkan lebih banyak pernyataan sekaligus (data ini masih disimpan di driver MySQLi), namun, setelah Anda menggunakan execute(), pernyataan akan dikirim ke database dan database akan mengharapkan semua permintaan bind_param() dan bind_result() di masa mendatang menjadi dari pernyataan yang sama, sampai Anda mengirimkan pernyataan baru.
Dua pernyataan sekaligus => dua koneksi ke DB => dua objek mysqli.
Plus masalah Anda dapat diselesaikan dalam satu permintaan seperti:
$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();