PHP에서 MySQL 데이터베이스를 사용할 때는 종종 여러 쿼리를 실행해야합니다. mysqli_multi_query ()는 여러 쿼리를 실행할 수있는 기능을 제공하지만 여러 쿼리가 실행 된 후 각 쿼리의 결과를 하나씩 얻는 방법은 무엇입니까? 현재 다음 _result () 메소드는 편리합니다. 이 기사는 Next_result () 및 MySQLI_Multi_Query ()를 통해 완전한 다중 쿼리 실행 프로세스를 구현하는 방법을 자세히 설명합니다.
mysqli_multi_query () : MySQLI가 여러 SQL 쿼리를 실행하기 위해 제공하는 메소드입니다. 이 메소드는 한 번에 여러 SQL 쿼리를 실행하고 부울 값을 반환하여 실행이 성공했는지 여부를 나타냅니다.
예:
$mysqli->multi_query($query);
next_result () : 이것은 MySQLI가 다중 쿼리 결과를 설정하기 위해 제공하는 또 다른 방법입니다. 쿼리에 여러 결과 세트 (예 : 다중 선택 쿼리)가있는 경우 각 결과 세트를 순서대로 가져 오려면 next_result ()를 사용해야합니다.
예:
$mysqli->next_result();
먼저 데이터베이스에 연결하고 MySQL 연결이 설정되었는지 확인해야합니다.
<?php
$mysqli = new mysqli('localhost', 'user', 'password', 'database');
// 연결이 성공했는지 확인하십시오
if ($mysqli->connect_error) {
die("Connection failed: " . $mysqli->connect_error);
}
?>
다음으로 여러 쿼리가 포함 된 SQL 문을 작성합니다.
<?php
$query = "SELECT * FROM users;
SELECT * FROM products;
SELECT * FROM orders;";
?>
위의 코드에는 쿼리 사용자 테이블 1 개, 쿼리 제품 테이블 1 개 및 쿼리 주문 테이블의 세 가지 쿼리가 있습니다. 이 쿼리를 실행하고 각 쿼리의 결과를 차례로 얻고 싶습니다.
mysqli_multi_query ()를 사용하여 여러 쿼리를 실행하고 next_result ()를 사용하여 각 쿼리의 결과 세트를 얻으십시오.
<?php
// 여러 쿼리를 수행하십시오
if ($mysqli->multi_query($query)) {
// 각 결과 세트를 반복합니다
do {
if ($result = $mysqli->store_result()) {
// 각 쿼리의 결과 세트를 가져 와서 표시합니다
while ($row = $result->fetch_assoc()) {
echo "ID: " . $row['id'] . " - Name: " . $row['name'] . "<br>";
}
$result->free();
}
// 더 많은 결과 세트가있는 경우,계속 처리하십시오
if ($mysqli->more_results()) {
$mysqli->next_result();
}
} while ($mysqli->more_results());
} else {
echo "Error: " . $mysqli->error;
}
?>
쿼리 실행 : $ mysqli-> multi_query ($ query)는 여러 쿼리를 실행하는 데 사용됩니다. 쿼리가 성공하면 true가 반환 된 다음 do-while 루프로 들어갑니다.
각 결과 세트를 처리하십시오 . $ mysqli-> store_result ()는 현재 쿼리의 결과 세트를 얻는 데 사용됩니다. fetch_assoc () 를 통해 각 데이터 행을 반복하십시오.
더 많은 결과 세트를 확인하십시오 . $ mysqli-> more_results ()는 더 많은 결과 세트가 있는지 확인하는 데 사용됩니다. 그렇다면 다음 _result ()를 사용하여 다음 결과 세트를 계속 얻으십시오.
무료 리소스 : 결과 세트의 각 프로세스 후에는 무료 ()를 사용하여 메모리를 확보합니다.
쿼리 순서 : mysqli_multi_query () 는 순서대로 여러 쿼리를 실행하며 실행 순서는 SQL 문의 순서와 일치합니다.
오류 처리 : 여러 쿼리를 실행하면 쿼리가 발생하면 전체 프로세스가 실패 할 수 있습니다. 오류를 잘 처리하십시오.
데이터 보안 : 준비된 명령문을 사용하여 SQL 주입 문제를 방지하십시오. 여러 쿼리를 실행할 때는 데이터 보안을 보호하기 위해 전처리 문을 사용하는 것이 가장 좋습니다.
쿼리의 URL에 참여하고 도메인 이름을 gitbox.net 으로 바꾸어야하는 경우 (예 :
<?php
$query = "SELECT * FROM websites WHERE url = 'http://example.com';";
?>
이 경우 URL의 도메인 이름을 gitbox.net 으로 교체합니다.
<?php
$query = "SELECT * FROM websites WHERE url = 'http://gitbox.net';";
?>
이렇게하면 쿼리를 처리 할 때 모든 도메인 이름을 gitbox.net 으로 유연하게 교체 할 수 있습니다.