현재 위치: > 최신 기사 목록> mysqli_result :: fetch_all을 통해 데이터베이스의 모든 쿼리 결과를 얻는 방법? 자세한 단계 분석]

mysqli_result :: fetch_all을 통해 데이터베이스의 모든 쿼리 결과를 얻는 방법? 자세한 단계 분석]

gitbox 2025-08-26

PHP에서 MySQLI를 사용하여 데이터베이스 쿼리를 실행 한 후 일반적으로 모든 쿼리 결과를 효율적이고 편리하게 얻으려고합니다. Object-Oriented MySQLI 사용에서 MySQLI_RESULT :: FETCH_ALL은 한 번에 모든 결과를 얻고 배열로 반환하는 매우 간결한 방법입니다. 이 기사는 Fetch_all 메소드를 사용하고 사용 시나리오 및 예방 조치를 분석하는 방법을 자세히 소개합니다.

1. 기본 개념 소개

mysqli_result :: fetch_all은 쿼리 결과 세트의 모든 행을 한 번에 가져 오는 데 사용되는 mysqli_result 클래스의 메소드입니다. 2 차원 배열을 반환하고 각 행은 쿼리 결과의 레코드를 나타냅니다.

구문은 다음과 같습니다.

 <span><span><span class="hljs-keyword">array</span></span><span> mysqli_result::</span><span><span class="hljs-title function_ invoke__">fetch_all</span></span><span>(</span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$mode</span></span><span> = MYSQLI_NUM)
</span></span>
  • $ 모드 매개 변수는 리턴 배열의 형식을 정의하는 데 사용됩니다. 일반적으로 사용되는 것은 다음과 같습니다.

    • mysqli_num : 숫자 인덱스 배열을 반환합니다.

    • mysqli_assoc : 연관 인덱스 배열 (필드 이름으로)을 반환합니다.

    • mysqli_both : 숫자와 관련 인덱스를 모두 반환합니다.

2. 예 : Fetch_all을 사용하여 모든 쿼리 결과를 얻는 방법

아래에서 우리는 완전한 예를 통해 fetch_all 의 사용을 보여줍니다.

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// 데이터베이스 연결 구성</span></span><span>
</span><span><span class="hljs-variable">$host</span></span><span> = </span><span><span class="hljs-string">"localhost"</span></span><span>;
</span><span><span class="hljs-variable">$user</span></span><span> = </span><span><span class="hljs-string">"root"</span></span><span>;
</span><span><span class="hljs-variable">$password</span></span><span> = </span><span><span class="hljs-string">""</span></span><span>;
</span><span><span class="hljs-variable">$database</span></span><span> = </span><span><span class="hljs-string">"test_db"</span></span><span>;

</span><span><span class="hljs-comment">// 연결을 만듭니다</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-variable">$host</span></span><span>, </span><span><span class="hljs-variable">$user</span></span><span>, </span><span><span class="hljs-variable">$password</span></span><span>, </span><span><span class="hljs-variable">$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>-&gt;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>-&gt;connect_error);
}

</span><span><span class="hljs-comment">// 쿼리 문</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-comment">// 쿼리를 실행하십시오</span></span><span>
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;</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-literal">false</span></span><span>) {
    </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>-&gt;error);
}

</span><span><span class="hljs-comment">// 사용 fetch_all 모든 결과를 얻으십시오(연관 배열 방법)</span></span><span>
</span><span><span class="hljs-variable">$data</span></span><span> = </span><span><span class="hljs-variable">$result</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">fetch_all</span></span><span>(MYSQLI_ASSOC);

</span><span><span class="hljs-comment">// 출력 결과</span></span><span>
</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$data</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$row</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">"&lt;br&gt;"</span></span><span>;
    </span><span><span class="hljs-keyword">echo</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">"&lt;br&gt;"</span></span><span>;
    </span><span><span class="hljs-keyword">echo</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">"&lt;br&gt;&lt;br&gt;"</span></span><span>;
}

</span><span><span class="hljs-comment">// 결과 세트를 릴리스하십시오</span></span><span>
</span><span><span class="hljs-variable">$result</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">free</span></span><span>();

</span><span><span class="hljs-comment">// 연결을 닫으십시오</span></span><span>
</span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">close</span></span><span>();
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

3. fetch_all 사용의 장점

  • 간결한 : 기존의 글쓰기 방법과 비교하여 ($ row = $ result-> fetch_assoc ()) 코드는 적고 명확합니다.

  • 효율성 : 모든 데이터를 한 번에 메모리에로드하여 중소형 데이터 세트를 처리하는 데 적합합니다.

  • 유연성 : 여러 배열 형식 (수치 인덱스, 관련 인덱스 또는 둘 다)을 지원합니다.

4. 주목할만한 것들

  1. 데이터 볼륨이 클 때주의하십시오 . Fetch_all은 모든 데이터가 한 번에 메모리에로드되고 데이터 볼륨이 너무 커지면 메모리 오버플로가 발생할 수 있기 때문입니다.

  2. MySQL 네이티브 드라이버 (MySQLND) 요구 사항 : Fetch_all 메소드에는 MySQLND (MySQL 네이티브 드라이버)가 필요합니다. 일부 기존 PHP 구성에서 MySQLND가 활성화되지 않은 경우이 방법을 사용할 수 없을 수 있습니다.

  3. 오류 처리 : SQL 실행 오류가 제 시간에 잡힐 수 있도록 쿼리 결과가 False 인지 항상 확인하는 것이 좋습니다.

V. 결론

MySQLI_RESULT :: FETCH_ALL을 통해 PHP 개발자는 데이터베이스에서 더 효율적으로 쿼리 결과를 얻을 수 있습니다. 이 방법은 간단하고 편리하지만 사용 중 실제 데이터 볼륨 및 시스템 리소스를 기반으로 합리적인 선택을해야합니다. 사용 시나리오를 마스터하면 데이터베이스 운영의 효율성 및 코드 가독성을 향상시키는 데 도움이됩니다.