>  기사  >  类库下载  >  MYSQLI_STORE_RESULT와 MYSQLI_USE_RESULT의 차이점

MYSQLI_STORE_RESULT와 MYSQLI_USE_RESULT의 차이점

高洛峰
高洛峰원래의
2016-10-10 09:37:281206검색

이 글에서는 주로 PHP의 mysqli_query 매개변수인 MYSQLI_STORE_RESULT와 MYSQLI_USE_RESULT의 차이점을 소개합니다. 이 글에서는 이 두 매개변수의 5가지 차이점을 소개합니다. 필요한 친구는 이를 참조할 수 있습니다.

nosql이 되었지만 인기가 많은데, SQL이 여전히 주류인 것 같아요
오늘 php manul을 검색하다가 mysqli 쿼리가 흥미로운 매개변수를 전달할 수 있다는 것을 발견했습니다

@mysqli_query($this->sql,$SQL,($method ? MYSQLI_USE_RESULT : MYSQLI_STORE_RESULT));

php manul에서 이 두 가지에 직면했습니다. 매개변수가 설명되어 있습니다. 이와 같이.

Either the constant MYSQLI_USE_RESULT or MYSQLI_STORE_RESULT depending on the desired behavior. By default, MYSQLI_STORE_RESULT is used.

아무것도 전달되지 않으면 기본값은 MYSQLI_STORE_RESULT입니다.

phpmanul에서 누군가 이렇게 말했습니다. 많은 양의 데이터를 검색해야 한다면 MYSQLI_USE_RESULT를 사용합니다.

사실 이 두 매개변수의 차이는 여전히 매우 큽니다.

(1) 차이점은 서버에서 결과 집합의 행을 검색한다는 점입니다.
(2) MYSQLI_USE_RESULT는 쿼리를 시작하지만 실제로 행을 가져오지 않습니다.
(3) MYSQLI_STORE_RESULT는 모든 행을 즉시 검색합니다.
(4) MYSQLI_STORE_RESULT는 결과 집합이 서버에서 검색될 때 행을 가져오고 할당합니다. 메모리를 클라이언트에 저장한 다음 mysqli_fetch_array()를 호출하면 오류가 반환되지 않습니다. 이는 결과 집합을 유지하는 데이터 구조에서 행만 분리하기 때문입니다. mysqli_fetch_array()는 항상 NULL을 반환합니다. 결과 집합의 끝에 도달했음을 나타냅니다.
(5) MYSQLI_USE_RESULT 자체는 행을 검색하지 않고 행 단위 검색만 시작합니다. 즉, 각 행에 대해 mysqli_fetch_array()를 호출하여 자체적으로 완료해야 함을 의미합니다. 그런 경우에는 일반적인 상황에서 mysqli_fetch_array()가 NULL을 반환하는 것은 여전히 ​​결과 집합의 끝에 도달했음을 나타내지만 서버와 통신하는 동안 오류가 발생했음을 나타낼 수도 있습니다.

요약

MYSQLI_USE_RESULT에 비해 MYSQLI_STORE_RESULT는 더 높은 메모리 및 처리 요구 사항을 갖습니다. 전체 결과 세트가 클라이언트에 유지되므로 메모리 할당 및 데이터 구조 생성 비용이 매우 큽니다. 예, 한 번에 여러 행을 검색하려면 MYSQLI_USE_RESULT를 사용하세요.

MYSQLI_USE_RESULT는 처리되는 각 단일 행에 충분한 공간만 할당되므로 메모리 요구 사항이 더 낮습니다. 결과 집합에 대해 복잡한 데이터 구조를 만들 필요가 없기 때문에 더 빠릅니다. 반면 MYSQLI_USE_RESULT는 서버에 더 많은 로드를 가하므로 클라이언트가 모든 행을 검색하는 데 적합해 보일 때까지 결과 집합의 행을 유지해야 합니다.


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

관련 기사

더보기