PHP에서 Next_result () 함수는 MySQLI Extension 라이브러리에서 제공하는 기능입니다. 여러 쿼리 결과 세트를 처리합니다. 일반적으로 여러 쿼리가 실행되면이 기능은 여러 쿼리가 실행될 때 예기치 않은 동작을 피하기 위해 후속 결과 세트를 얻는 데 사용됩니다.
Next_result () 함수는 MySQLI의 일부이며 여러 SQL 쿼리를 실행할 때 모든 결과 세트를 올바르게 통과하도록 특별히 설계되었습니다. 그 목적은 더 이상 결과 세트를 사용할 수 없을 때까지 다음 결과 세트를 얻는 것입니다.
next_result () 의 사용을 더 잘 이해하려면 먼저 여러 쿼리가 포함 된 예가 필요합니다. 여러 SQL 쿼리가 포함 된 MySQL 요청을 처리한다고 가정하면 Multi_Query () 메소드를 사용하여 여러 쿼리를 한 번에 실행하고 Next_result ()를 사용하여 모든 결과 세트를 하나씩 얻을 수 있습니다.
<?php
// 데이터베이스 연결을 만듭니다
$mysqli = new mysqli("localhost", "user", "password", "database");
// 연결이 성공했는지 확인하십시오
if ($mysqli->connect_error) {
die("연결이 실패했습니다: " . $mysqli->connect_error);
}
// 다중 쿼리 문
$sql = "SELECT * FROM users; SELECT * FROM orders; SELECT * FROM products;";
// 여러 쿼리를 수행하십시오
if ($mysqli->multi_query($sql)) {
// 첫 번째 결과 세트를 가져옵니다
if ($result = $mysqli->store_result()) {
echo "Users Table Results:<br>";
while ($row = $result->fetch_assoc()) {
echo "User: " . $row["username"] . "<br>";
}
$result->free();
}
// 다음 결과 세트를 얻으십시오
while ($mysqli->next_result()) {
if ($result = $mysqli->store_result()) {
// 각 쿼리의 결과를 처리하십시오
echo "<br>Next Result:<br>";
while ($row = $result->fetch_assoc()) {
echo "ID: " . $row["id"] . " - Name: " . $row["name"] . "<br>";
}
$result->free();
}
}
}
// 데이터베이스 연결을 닫습니다
$mysqli->close();
?>
위의 코드에서 먼저 Multi_Query ()를 통해 3 개의 SQL 쿼리를 실행합니다. 그런 다음 다음 _result ()를 사용하여 각 결과를 순서대로 반복하십시오. 이러한 방식으로 각 쿼리를 다시 실행하지 않고도 동일한 데이터베이스 연결에서 여러 쿼리 결과를 처리 할 수 있습니다.
전화 주문 : Next_Result ()가 호출 될 때마다 MySQLI가 다음 결과 세트로 자동 이동합니다. 더 이상 결과 세트가 없으면 함수는 false를 반환합니다.
무료 리소스 : 각 결과 세트를 얻고 처리 한 후 Free () 메소드를 사용하여 메모리 누출을 피하기 위해 쿼리 결과를 릴리스해야합니다.
오류 처리 : 여러 쿼리를 실행할 때 Multi_Query () 메소드가 오류가 발생할 수 있지만 Next_Result ()는 이전 쿼리가 완전히 처리 된 후에 만 처리됩니다. 따라서 각 쿼리의 오류를 처리하고 예외 처리를 수행하십시오.
성능 고려 사항 : 여러 쿼리를 사용하면 데이터베이스 측면에서 여러 쿼리를 처리하지만 응용 프로그램 계층에서는 각 쿼리의 결과를 하나씩 읽고 처리해야합니다. 따라서 쿼리의 구조 및 데이터 볼륨이 성능에 영향을 미치지 않도록 중간 정도인지 확인하십시오.
실제 개발에서는 여러 쿼리가 사용되며 각 쿼리의 결과는 순서대로 처리됩니다. 일반적인 응용 프로그램 시나리오에는 다른 테이블에서 데이터를 읽고 페이지에 표시하는 것이 포함됩니다. 여러 테이블에서 데이터를 결합하는 방법을 보여주는 간단한 예입니다.
<?php
// 이것이 사용자 관리 시스템이라고 가정하십시오,먼저 사용자 테이블을 쿼리하십시오,주문 테이블을 다시 확인하십시오,제품 정보를 얻습니다
$sql = "SELECT id, username FROM users; SELECT id, order_name FROM orders; SELECT id, product_name FROM products;";
// 쿼리를 실행하십시오
if ($mysqli->multi_query($sql)) {
// 사용자 데이터를 얻습니다
if ($result = $mysqli->store_result()) {
echo "Users:<br>";
while ($row = $result->fetch_assoc()) {
echo "ID: " . $row["id"] . " - Username: " . $row["username"] . "<br>";
}
$result->free();
}
// 주문 데이터를 얻으십시오
while ($mysqli->next_result()) {
if ($result = $mysqli->store_result()) {
echo "<br>Orders:<br>";
while ($row = $result->fetch_assoc()) {
echo "Order ID: " . $row["id"] . " - Order Name: " . $row["order_name"] . "<br>";
}
$result->free();
}
}
// 제품 데이터를 얻으십시오
while ($mysqli->next_result()) {
if ($result = $mysqli->store_result()) {
echo "<br>Products:<br>";
while ($row = $result->fetch_assoc()) {
echo "Product ID: " . $row["id"] . " - Product Name: " . $row["product_name"] . "<br>";
}
$result->free();
}
}
}
$mysqli->close();
?>
이 예에서는 사용자 의 세 테이블, 주문 및 제품 테이블에서 데이터를 성공적으로 가져오고 각 쿼리의 결과를 하나씩 처리했습니다.