오류: MySQLi를 사용하는 동안 "명령이 동기화되지 않았습니다"
문제:
여러 MySQLi 쿼리를 동시에 실행하려고 하면 "명령이 동기화되지 않음" 오류가 발생합니다. 중첩 쿼리는 계층적 데이터를 검색합니다.
원인:
MySQL에서는 진행 중인 쿼리의 행이 남아 있는 동안 새 쿼리 실행을 허용하지 않습니다. 가져오지 않았습니다.
해결책:
옵션 1: mysqli_store_result() 사용
$result = mysqli_store_result($db); // Execute subsequent queries
이렇게 하면 MySQL 클라이언트, 다중 쿼리 가능 실행됩니다.
옵션 2: mysqli_result::fetch_all() 사용
$result = mysqli_query($db, $sql); $data = mysqli_fetch_all($result, MYSQLI_ASSOC); // Execute subsequent queries
이렇게 하면 전체 결과 집합이 배열로 반환되므로 여러 쿼리를 수행할 수 있습니다.
고려 사항:
중첩 쿼리는 계층적 데이터 저장을 나타냅니다. mysqli_next_result()를 사용하여 저장 프로시저의 여러 결과 세트를 처리하려면 대체 데이터 모델이나 CodeIgnitor와 같은 프레임워크 사용을 고려하세요.
CodeIgnitor 구현:
// Edit code in system/database/drivers/mysqli/mysqli_driver.php protected function _execute($sql) { $results = $this->conn_id->query($this->_prep_query($sql)); @mysqli_next_result($this->conn_id); // Fix 'command out of sync' error return $results; }
위 내용은 중첩 쿼리를 사용할 때 MySQLi에서 '명령이 동기화되지 않음' 오류를 해결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!