집 >데이터 베이스 >MySQL 튜토리얼 >PHP에서 여러 MySQL 쿼리를 효율적으로 실행하는 방법은 무엇입니까?
PHP를 사용한 MySQL 다중 쿼리
PHP에서는 단일 요청으로 여러 MySQL 쿼리를 실행하는 것이 어려울 수 있습니다. 이 문서에서는 효율적인 처리를 위해 여러 개의 상호 의존적인 쿼리를 결합해야 하는 일반적인 상황을 다룹니다.
초기 접근 방식은 제공된 쿼리를 사용하여 개별 뷰를 만드는 것이었습니다. 그러나 이로 인해 오류가 발생했거나 결과 집합이 비어 있었습니다. 이 문제를 해결하기 위해 PHP는 연결된 쿼리를 실행할 수 있는 mysqli_multi_query() 함수를 제공합니다.
다음은 예제 코드 조각입니다.
/* Create database connection */ $link = mysqli_connect("server", "user", "password", "database"); $query = "CREATE VIEW current_rankings AS SELECT * FROM main_table WHERE date = X;"; $query .= "CREATE VIEW previous_rankings AS SELECT rank FROM main_table WHERE date = date_sub('X', INTERVAL 1 MONTH);"; $query .= "CREATE VIEW final_output AS SELECT current_rankings.player, current_rankings.rank as current_rank LEFT JOIN previous_rankings.rank as prev_rank ON (current_rankings.player = previous_rankings.player);"; $query .= "SELECT *, @rank_change = prev_rank - current_rank as rank_change from final_output;"; /* Execute multiple queries using mysqli_multi_query() */ if (mysqli_multi_query($link, $query)) { do { /* Store current result set */ if ($result = mysqli_store_result($link)) { while ($row = mysqli_fetch_array($result)) { echo $row['player']. $row['current_rank']. $row['prev_rank']. $row['rank_change']; } mysqli_free_result($result); } } while (mysqli_next_result($link)); }
이 접근 방식은 모든 쿼리를 하나의 쿼리로 결합합니다. 단일 문자열을 동시에 실행합니다. mysqli_multi_query() 함수는 성공적으로 실행되면 TRUE를 반환합니다.
실행 계획에 추가 쿼리가 필요한 경우 세미콜론(;)을 구분 기호로 사용하여 $query 문자열에 추가할 수 있습니다. 각 결과 세트는 mysqli_store_result()를 사용하여 별도의 변수에 저장하고 루프 내에서 mysqli_fetch_array()를 사용하여 가져올 수 있습니다.
또는 mysqli_query() 함수를 사용하여 별도로 쿼리를 실행할 수도 있습니다.
$query1 = "Create temporary table A select c1 from t1"; $result1 = mysqli_query($link, $query1) or die(mysqli_error()); $query2 = "select c1 from A"; $result2 = mysqli_query($link, $query2) or die(mysqli_error()); while($row = mysqli_fetch_array($result2)) { echo $row['c1']; }
이 접근 방식을 사용하면 쿼리 실행 및 결과 처리를 더 효과적으로 제어할 수 있습니다.
위 내용은 PHP에서 여러 MySQL 쿼리를 효율적으로 실행하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!