PHP에서 MySQLI 확장은 MySQL 데이터베이스를 연결하고 조작하는 강력한 도구입니다. SQL 쿼리의 결과 세트를 처리하는 여러 가지 방법을 제공합니다. 그 중에서 MySQLI :: USE_RESULT 함수는 일반적으로 사용되는 기능이며, 특히 많은 양의 데이터가 필요한 시나리오에 적합하거나 결과 세트를 한 줄씩 읽으려는 시나리오에 적합합니다. 이 기사에서는 기본 결과 세트 처리를 위해 mysqli :: use_result 함수를 사용하는 방법을 자세히 설명하고 실제 응용 프로그램을 보여줄 예제를 제공합니다.
mysqli :: use_result는 실행 된 SQL 쿼리에서 결과 세트를 얻는 데 사용되는 MySQLI 클래스의 메소드입니다. 이 메소드를 호출 할 때 모든 결과를 한 번에 메모리에로드하지는 않지만 데이터를 라인별로 처리 할 수있는 결과 세트에 대한 포인터를 반환합니다.
이 방법은 일반적으로 선택 쿼리와 함께 사용됩니다. 쿼리가 많은 양의 데이터를 반환하면 USE_RESULT는 과도한 메모리 소비를 피할 수 있으므로 성능이 향상됩니다. mysqli :: store_result 메소드와 다르며 모든 쿼리 결과를 한 번에 메모리에로드합니다.
데이터베이스 연결 <br>을 만듭니다 먼저 MySQLI_Connect 함수를 통해 MySQL 데이터베이스에 연결해야합니다.
SQL 쿼리를 실행하십시오 <br> mysqli_query 함수를 사용하여 SQL 쿼리를 실행하여 쿼리 문이 선택 유형인지 확인하십시오.
use_result 메소드 <br>에 전화하십시오 mysqli :: use_result 메소드를 호출하여 쿼리 결과를 얻으십시오.
처리 결과 세트 <br> mysqli_fetch_row 또는 mysqli_fetch_assoc 과 같은 함수를 사용하여 더 이상 데이터가 없을 때까지 쿼리 결과를 행으로 행으로 가져옵니다.
연결을 닫습니다 <br> 쿼리 및 결과 처리가 완료되면 데이터베이스 연결을 닫아야합니다.
다음은 mysqli :: use_result 메소드를 사용하여 결과 세트를 처리하는 간단한 예입니다.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 단계 1: 데이터베이스 연결을 만듭니다</span></span><span>
</span><span><span class="hljs-variable">$mysqli</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title function_ invoke__">mysqli</span></span><span>(</span><span><span class="hljs-string">"localhost"</span></span><span>, </span><span><span class="hljs-string">"username"</span></span><span>, </span><span><span class="hljs-string">"password"</span></span><span>, </span><span><span class="hljs-string">"database"</span></span><span>);
</span><span><span class="hljs-comment">// 연결이 성공했는지 확인하십시오</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$mysqli</span></span><span>->connect_error) {
</span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">"연결이 실패했습니다: "</span></span><span> . </span><span><span class="hljs-variable">$mysqli</span></span><span>->connect_error);
}
</span><span><span class="hljs-comment">// 단계 2: 구현하다SQL질문</span></span><span>
</span><span><span class="hljs-variable">$sql</span></span><span> = </span><span><span class="hljs-string">"SELECT id, name, email FROM users"</span></span><span>;
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-variable">$mysqli</span></span><span>-></span><span><span class="hljs-title function_ invoke__">query</span></span><span>(</span><span><span class="hljs-variable">$sql</span></span><span>);
</span><span><span class="hljs-comment">// 检查질문是否成功</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$result</span></span><span>) {
</span><span><span class="hljs-comment">// 단계 3: 사용use_result결과 세트를 가져옵니다</span></span><span>
</span><span><span class="hljs-variable">$res</span></span><span> = </span><span><span class="hljs-variable">$mysqli</span></span><span>-></span><span><span class="hljs-title function_ invoke__">use_result</span></span><span>();
</span><span><span class="hljs-comment">// 단계 4: 결과 세트를 한 줄씩 처리하십시오</span></span><span>
</span><span><span class="hljs-keyword">while</span></span><span> (</span><span><span class="hljs-variable">$row</span></span><span> = </span><span><span class="hljs-variable">$res</span></span><span>-></span><span><span class="hljs-title function_ invoke__">fetch_assoc</span></span><span>()) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"ID: "</span></span><span> . </span><span><span class="hljs-variable">$row</span></span><span>[</span><span><span class="hljs-string">'id'</span></span><span>] . </span><span><span class="hljs-string">" - Name: "</span></span><span> . </span><span><span class="hljs-variable">$row</span></span><span>[</span><span><span class="hljs-string">'name'</span></span><span>] . </span><span><span class="hljs-string">" - Email: "</span></span><span> . </span><span><span class="hljs-variable">$row</span></span><span>[</span><span><span class="hljs-string">'email'</span></span><span>] . </span><span><span class="hljs-string">"<br>"</span></span><span>;
}
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"질문失败: "</span></span><span> . </span><span><span class="hljs-variable">$mysqli</span></span><span>->error;
}
</span><span><span class="hljs-comment">// 단계 5: 데이터베이스 연결을 닫습니다</span></span><span>
</span><span><span class="hljs-variable">$mysqli</span></span><span>-></span><span><span class="hljs-title function_ invoke__">close</span></span><span>();
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
데이터베이스 연결 생성 :
먼저 새로운 MySQLI를 통해 데이터베이스 연결을 설정하고 데이터베이스 호스트 이름, 사용자 이름, 비밀번호 및 데이터베이스 이름을 전달합니다. 연결이 실패하면 $ mysqli-> connect_error를 통해 오류 메시지가 반환되고 스크립트가 종료됩니다.
쿼리 실행 :
$ mysqli-> 쿼리 메소드를 사용하여 쿼리 문을 실행하고 쿼리가 성공한 후 결과 객체가 반환됩니다.
결과 세트 가져 오기 :
$ mysqli-> use_result () 메서드를 호출하여 결과 세트에 대한 포인터를 가져 오십시오.이 세트는 쿼리의 각 데이터 행을 가리 킵니다.
라인 별 처리 결과 :
Fetch_Assoc 메소드를 사용하여 데이터 행을 행으로 추출하는데, 여기서 키는 열 이름이고 값은 해당 열의 값입니다.
연결 닫기 :
데이터가 처리되면 $ mysqli-> close ()를 사용하여 데이터베이스 연결을 닫습니다.
메모리 저장 : USE_RESULT가 모든 데이터를 한 번에 메모리에로드하지 않으므로 큰 데이터 쿼리를 처리하는 데 적합합니다.
성능 향상 : 빅 데이터 쿼리의 경우, 처리 결과 세트는 라인별로 한 번에 한 번에 모든 데이터를 읽는 것보다 더 효율적입니다.
여러 쿼리를 동시에 실행할 수 없습니다. store_result 메소드와 달리 USE_RESULT를 사용할 때는 현재 쿼리의 결과 세트 만 처리 할 수 있으며 여러 쿼리를 실행할 수 없습니다.
랜덤 액세스가 지원되지 않습니다 : use_result 로 반환 된 결과 세트는 행으로 만 처리 될 수 있으며, 결과 세트의 어떤 위치에도 리디렉션 될 수 없습니다.
mysqli :: use_result는 큰 데이터 세트를 처리 할 때 매우 유용한 도구이며, 데이터가 라인별로 처리되고 메모리 사용에 대한 엄격한 요구 사항이있는 시나리오에 특히 적합합니다. 이를 올바르게 사용하는 방법을 이해하면 개발자가 성능 및 메모리 관리에서 더 나은 선택을 할 수 있습니다. 많은 양의 데이터를 다루거나 쿼리 결과의 메모리 풋 프린트에 민감한 경우, use_result는 가치있는 접근법입니다.
관련 태그:
mysqli