Mysql
 sql >> Database >  >> RDS >> Mysql

Più oggetti SQL in PHP/MySQLi

In una connessione MySQL, puoi lavorare con una sola query alla volta. Puoi preparare più istruzioni contemporaneamente (questi dati sono ancora conservati nel driver MySQLi), tuttavia, una volta utilizzato execute(), l'istruzione verrà inviata al database e il database si aspetterà che tutte le future richieste bind_param() e bind_result() siano di la stessa dichiarazione, fino a quando non invii una nuova dichiarazione.

Due istruzioni contemporaneamente => due connessioni al DB => due oggetti mysqli.

Inoltre, il tuo problema può essere risolto in un'unica query come:

$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();