Mysql
 sql >> база данни >  >> RDS >> Mysql

Множество SQL обекти в PHP/MySQLi

В една MySQL връзка можете да работите само с една заявка в даден момент. Можете да подготвите повече оператори наведнъж (тези данни все още се съхраняват в драйвера на MySQLi), но след като използвате execute(), операторът ще бъде изпратен до базата данни и базата данни ще очаква всички бъдещи заявки bind_param() и bind_result() да бъдат от същото извлечение, докато не изпратите ново извлечение.

Два оператора едновременно => две връзки към 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();



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL Workbench игнорира външни ключове

  2. MySQL тригер преди вмъкване на колона за актуализиране с нов идентификатор за автоматично увеличение

  3. Как да декларирам вътрешна таблица в MySQL?

  4. python odo sql AssertionError:формата на данните трябва да е тип запис, има 0 * {...}

  5. Не може да се избере къде ip=inet_pton($ip)