데이터베이스 작업에 PHP를 사용하는 경우 효율성을 향상시키기 위해 한 번에 여러 SQL 문을 실행해야합니다. MySQLI 확장자는 다중 상태 실행을 지원하지만 여러 문의 결과를 처리 할 때는 Next_Result ()를 사용하여 각 결과 세트를 올바르게 통과해야합니다. 이 기사는 Next_result () 의 역할 및 사용 시나리오를 자세히 소개합니다.
다중 진술 실행을 통해 여러 SQL 문을 데이터베이스 요청에서 실행할 수 있으며 각 문을 세미콜론 ( ; )으로 분리합니다. 예를 들어:
SELECT * FROM users;
SELECT * FROM orders;
mysqli :: multi_query () 메소드를 사용하면 위의 여러 쿼리를 한 번에 실행하여 데이터베이스와의 상호 작용 수를 줄이고 성능을 향상시킬 수 있습니다.
Multi_Query ()를 사용하여 여러 문을 실행할 때 각 문은 독립적 인 결과 세트를 반환합니다. next_result () 의 목적은 이러한 결과 세트를 반복하여 각 문을 올바르게 처리 할 수 있도록하는 것입니다.
next_result () 가 호출되지 않으면 첫 번째 문의 결과를 처리 할 수 있으며 나머지 문의 결과는 무시되거나 오류가 발생합니다.
다음은 multi_query () 및 next_result ()를 사용하는 완전한 예입니다.
<?php
// 데이터베이스 연결 구성
$host = 'localhost';
$user = 'root';
$password = 'password';
$database = 'test_db';
// 연결을 만듭니다
$mysqli = new mysqli($host, $user, $password, $database);
// 연결을 확인하십시오
if ($mysqli->connect_error) {
die('연결이 실패했습니다:' . $mysqli->connect_error);
}
// 다수의 SQL 성명
$sql = "SELECT * FROM users; SELECT * FROM orders;";
// 执行多성명查询
if ($mysqli->multi_query($sql)) {
do {
// 현재 결과 세트를 저장하십시오
if ($result = $mysqli->store_result()) {
while ($row = $result->fetch_assoc()) {
print_r($row);
}
// 결과 세트를 릴리스하십시오
$result->free();
}
// 더 많은 결과 세트가 있는지 확인하십시오
} while ($mysqli->more_results() && $mysqli->next_result());
} else {
echo "쿼리가 실패했습니다:" . $mysqli->error;
}
// 연결을 닫으십시오
$mysqli->close();
?>
데이터베이스 연결 설정 :
MySQLI를 사용하여 데이터베이스에 연결하십시오.
여러 SQL 문을 준비하십시오.
세미콜론으로 다중 쿼리 문을 별도로 분리하십시오.
다중 상태 쿼리 실행 :
multi_query ()를 사용하여 모든 문을 실행하십시오.
결과 세트를 가로 지르기 :
store_result () 를 통해 현재 설정 세트를 가져옵니다.
fetch_assoc ()을 사용하여 데이터 라인별로 데이터를 출력하십시오.
메모리를 저장하기 위해 현재 결과 세트를 자유롭게하십시오.
다음 _result ()를 사용하여 모든 결과가 처리 될 때까지 다음 결과 세트로 이동하십시오.
데이터베이스 연결을 닫습니다.
리소스를 자유롭게하고 연결을 닫으십시오.
MySQLI 가 확장 한 객체 지향 모드를 사용하십시오.
각 SQL 문은 세미콜론 ( ; )으로 분리되어야하며, 그렇지 않으면 구문 오류로 이어질 수 있습니다.
결과를 처리 할 때 다음 _result ()를 사용하여 모든 결과 세트를 반복하십시오. 그렇지 않으면 "동기화 된 명령"오류가 발생할 수 있습니다.
next_result ()는 다음 시나리오에서 일반적으로 사용됩니다.
여러 테이블의 데이터 배치 쿼리.
배치로 여러 업데이트를 실행, 삽입 또는 삭제하십시오.
저장된 프로 시저를 실행할 때 여러 결과 세트를 반환합니다.
예를 들어, 배치 쿼리 사용자 정보 및 주문 데이터를 할 때 하나의 데이터베이스 연결만으로 두 가지 결과 세트를 얻을 수 있으며 논리를 단순화하고 효율성을 향상시킬 수 있습니다.
Next_result () 는 다중 경영 쿼리를 처리하는 데 없어서는 안될 부분이며 각 결과 세트를 올바르게 처리 할 수 있도록합니다. Multi_Query () 및 Next_result ()를 합리적으로 사용하면 데이터의 일괄 처리가 필요할 때 데이터베이스 작업의 효율성을 효과적으로 개선 할 수 있습니다.