Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Wiele obiektów SQL w PHP/MySQLi

W jednym połączeniu MySQL możesz pracować tylko z jednym zapytaniem na raz. Możesz przygotować więcej instrukcji na raz (te dane są nadal przechowywane w sterowniku MySQLi), jednak gdy użyjesz execute(), instrukcja zostanie wysłana do bazy danych i baza danych będzie oczekiwać, że wszystkie przyszłe żądania bind_param() i bind_result() będą to samo oświadczenie, dopóki nie wyślesz nowego.

Dwie instrukcje w tym samym czasie => dwa połączenia z bazą danych => dwa obiekty mysqli.

Dodatkowo Twój problem można rozwiązać za pomocą pojedynczego zapytania, takiego jak:

$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. SQL:Jak wybrać wszystkie węzły nadrzędne w ścieżce zmaterializowanej?

  2. Obliczanie tygodnia MySQL między dwiema datami

  3. Jak pracować z javax.persistence.sql-load-script-source?

  4. MySQL :pobierz duży wybór porcjami

  5. Sequelize, MySQL - Filtrowanie wierszy w tabeli z wartościami kolumn JSON