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

Flere SQL-objekter i PHP/MySQLi

I én MySQL-forbindelse kan du kun arbejde med én forespørgsel ad gangen. Du kan forberede flere sætninger på én gang (disse data opbevares stadig i MySQLi-driveren), men når du først bruger execute(), vil sætningen blive sendt til databasen, og databasen forventer, at alle fremtidige bind_param()- og bind_result()-anmodninger er af samme opgørelse, indtil du sender ny opgørelse.

To udsagn på samme tid => to forbindelser til DB => to mysqli-objekter.

Plus dit problem kan løses i en enkelt forespørgsel som:

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



  1. Tæl poster fra to tabeller grupperet efter ét felt

  2. Er det bedre at bruge INNER JOIN eller EXISTS for at finde tilhørsforhold til flere i m2m forhold?

  3. Doktringenererende forespørgsel med forkert tabelalias

  4. Microsoft Access 2010, 2013, 2016 og 2019 Tutorial