sql >> Database >  >> RDS >> Mysql

Meerdere SQL-objecten in PHP/MySQLi

In één MySQL-verbinding kunt u met slechts één query tegelijk werken. U kunt meer instructies tegelijk voorbereiden (deze gegevens worden nog steeds bewaard in het MySQLi-stuurprogramma), maar zodra u execute() gebruikt, wordt de instructie naar de database verzonden en verwacht de database dat alle toekomstige bind_param()- en bind_result()-verzoeken van dezelfde verklaring, totdat u een nieuwe verklaring verzendt.

Twee statements tegelijk => twee verbindingen met de DB => twee mysqli-objecten.

Bovendien kan uw probleem worden opgelost in een enkele zoekopdracht, zoals:

$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. Een uitzondering krijgen ORA-00942:tabel of weergave bestaat niet - bij invoegen in een bestaande tabel

  2. Python pymySQL stuurt een string met aanhalingstekens

  3. SQL Server Bulk Insert – Deel 2

  4. Stappen om stand-by te synchroniseren met primaire database in Oracle