MySQL을 사용하는 경우 때로는 여러 SQL 쿼리를 실행하여 한 번에 여러 결과 세트를 얻습니다. PHP에서 MySQLI Extension을 사용하는 경우 Multi_Query () 메소드를 사용하여 여러 쿼리를 한 번에 실행 한 다음이 결과를 하나씩 다음 ext_result () 및 mysqli_fetch_assoc () ~ 하나씩 처리 할 수 있습니다.
아래에서 우리는 예제를 통해이 과정을 보여줄 것입니다.
사용자 와 주문이라는 두 개의 테이블이있는 데이터베이스가 있다고 가정합니다. 우리는 두 테이블의 내용을 동시에 쿼리하려고합니다.
<?php
// 데이터베이스 연결을 만듭니다
$mysqli = new mysqli("localhost", "username", "password", "database");
// 연결이 성공했는지 확인하십시오
if ($mysqli->connect_error) {
die("연결이 실패했습니다: " . $mysqli->connect_error);
}
// 여러 줄을 구성하십시오SQL성명
$sql = "SELECT id, name FROM users;";
$sql .= "SELECT id, user_id, total FROM orders;";
// 사용multi_query()执行多条성명
if ($mysqli->multi_query($sql)) {
do {
// 사용store_result()현재 결과 세트를 가져옵니다
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();
?>
이 기능을 사용하면 단일 요청에서 여러 SQL 문을 실행할 수 있습니다. 이는 쿼리의 배치 실행 및 요청 수를 줄이는 데 매우 유용합니다.
이 함수는 현재 결과 세트를 가져 와서 fetch_assoc () 와 함께 라인별로 읽는 데 사용됩니다.
결과 세트에서 연관 배열로 행을 반환하여 루프에서 데이터를 추출하는 데 적합합니다.
이 기능은 다음 결과 세트를 준비하는 데 사용됩니다. 현재 결과 세트를 처리 한 후 다음 결과 세트를 입력하려면 호출되어야합니다.
결과 세트가 처리 될 때마다 Free ()를 사용하여 리소스를 제거하십시오.
SQL 주입 문제를 예방하기 위해주의하십시오. 쿼리 문에 사용자 입력이 포함 된 경우 전처리 문을 사용하십시오.
More_Results ()를 확인하여 처리 할 결과 세트가 더 있는지 확인하십시오.
일부 시나리오에서는 multi_query () + next_result ()를 사용할 수 있습니다.
백엔드 보고서는 여러 테이블을 쿼리합니다
저장된 절차를 실행하여 여러 결과 세트를 반환합니다
성능을 최적화하고 데이터베이스 상호 작용을 줄입니다
Multi_Query () 와 Next_Result () 및 MySQLI_Fetch_Assoc () 과 결합하여 여러 결과 세트를 우아하게 처리하여 프로그램 효율성 및 코드 단순성을 향상시킬 수 있습니다.
위에서 볼 수 있듯이 엔터프라이즈 애플리케이션을 개발하든 자체 서비스를 구축하든 이러한 기능의 사용을 마스터하면 데이터베이스를보다 효율적으로 운영하는 데 도움이됩니다.
콘텐츠에 대해 자세히 알고 싶다면 더 실용적인 자습서 및 자료는 https://gitbox.net 을 방문하십시오.