MySQLI를 사용하여 다중 정체 문을 실행할 때 때때로 각 결과를 차례로 처리해야합니다. PHP는 MySQLI_MORE_RESULTS () 와 MYSQLI_NEXT_RESULT () 의 두 가지 기능을 제공하여 이러한 결과를 우아하게 통과 할 수 있습니다.
이 기사는 실제 코드 예제를 사용하여 mysqli_next_result ()에 대한 잘못된 호출을 피하기 위해 MySQLI_MORE_RESULTS ( )를 사용하는 방법을 설명합니다.
예를 들어 SQL 문의 세트가 있다고 가정합니다.
SELECT * FROM users;
SELECT * FROM orders;
SELECT * FROM products;
한 번에 실행하고 각 쿼리의 결과를 하나씩 처리하려고합니다. 이 상황은 백엔드 배치 데이터 디스플레이, 데이터 초기화 및 기타 목적을 관리하는 데 적합합니다.
먼저 데이터베이스에 연결하고 Multi_Query를 사용하여 여러 SQL 문을 실행해야합니다.
$mysqli = new mysqli("localhost", "username", "password", "database");
if ($mysqli->connect_errno) {
die("연결이 실패했습니다: " . $mysqli->connect_error);
}
$sql = "
SELECT * FROM users;
SELECT * FROM orders;
SELECT * FROM products;
";
if ($mysqli->multi_query($sql)) {
do {
// 현재 결과 세트를 처리하십시오
if ($result = $mysqli->store_result()) {
while ($row = $result->fetch_assoc()) {
print_r($row);
}
$result->free();
}
// 다른 결과 세트가 있는지 확인하십시오
if ($mysqli->more_results()) {
echo "더 많은 결과 세트가 있습니다,계속 처리 할 준비가되었습니다...\n";
} else {
echo "모든 결과가 처리되었습니다。\n";
}
} while ($mysqli->more_results() && $mysqli->next_result());
} else {
echo "실행 실패: " . $mysqli->error;
}
$mysqli->close();
이 예에서는 다음과 같은 주요 기능을 사용합니다.
mysqli :: multi_query ($ query)
여러 SQL 문이 포함 된 쿼리를 데이터베이스에 보냅니다.
mysqli :: store_result ()
현재 결과 세트를 가져옵니다.
mysqli :: more_results ()
나머지 결과 세트가 있는지 확인하십시오.
mysqli :: next_result ()
다음 결과 세트로 이동하여 계속 처리 할 수 있습니다.
do ... while loop을 통해 mysqli_more_results () 와 mysqli_next_result ()를 결합한 루프를 통해 다음 _result ()를 잘못 호출 할 때 정의되지 않은 동작이나 오류를 피하기 위해 모든 결과 세트를 안전하게 처리 할 수 있습니다.
일부 개발자는 결과가 더 있는지 확인하지 않고 루프에서 직접 mysqli_next_result ()를 사용할 수 있으며 다음과 같은 오류가 발생할 수 있습니다.
// 잘못된 사용:확인되지 않았습니다 more_results() 그냥 전화하십시오 next_result()
while ($mysqli->next_result()) {
// 처리 결과 세트
}
그렇게하면 후속 결과없이 경고 나 오류가 발생할 수 있습니다. 따라서 다음 _result ()를 호출하기 전에 항상 more_results ()를 확인해야합니다.
mysqli_more_results ()는 multi_query ()를 사용한 후 더 많은 결과 세트가 있는지 여부를 결정하는 중요한 도구입니다. mysqli_next_result () 와 함께 사용하면 프로그램 논리의 견고성을 보장하고 결과 세트에 대한 외형 액세스로 인한 오류를 피할 수 있습니다.
보고서 시스템 또는 배경 데이터 배치 로직과 같은 실제 프로젝트 에서이 기술을 마스터하면 PHP 프로그램을보다 신뢰할 수 있고 유지 관리 할 수 있습니다.
자세한 내용은 개발 문서를 방문하십시오 : https://gitbox.net/docs