현재 위치: > 최신 기사 목록> mysql_fetch_array 및 mysql_fetch_row의 차이와 응용

mysql_fetch_array 및 mysql_fetch_row의 차이와 응용

gitbox 2025-06-03

PHP를 사용하여 MySQL 데이터베이스에 연결할 때 쿼리 결과를 얻는 방법에는 여러 가지가 있습니다. mysql_fetch_arraymysql_fetch_row 는 일반적으로 사용되는 두 가지 함수입니다. 쿼리 결과에서 모든 데이터 행을 얻을 수 있지만 반환 된 데이터 구조 및 해당 시나리오는 다릅니다. 이 기사는이 두 기능과 해당 응용 프로그램 시나리오의 차이점을 자세히 설명합니다.


1. 기능 소개

  • mysql_fetch_array ()

    이 함수는 결과 세트에서 연관 배열, 숫자 인덱스 어레이 또는 둘 다가있는 배열로 행을 취합니다. 기본 동작은 숫자 인덱스 및 관련 인덱스가 포함 된 배열을 반환하는 것입니다.

    구문 예 :

     $row = mysql_fetch_array($result, MYSQL_BOTH);
    

    두 번째 매개 변수는 다음과 같습니다.

    • mysql_assoc : 연관 배열 만 반환합니다

    • mysql_num : 숫자 인덱스 배열 만 반환합니다

    • MySQL_Both (기본값) : 연관 및 숫자 인덱스 배열을 모두 반환합니다

  • mysql_fetch_row ()

    이 함수는 결과 세트에서 행을 가져 와서 숫자 인덱스 배열로 반환합니다. 즉, 결과는 숫자 인덱스를 통해서만 액세스 할 수 있으며 필드 이름으로 액세스 할 수 없습니다.

    구문 예 :

     $row = mysql_fetch_row($result);
    

2. 주요 차이점

특성 mysql_fetch_array mysql_fetch_row
반환 값 유형 기본적으로 숫자 인덱스 + 관련 인덱스를 반환하는 배열 (선택 사항) 숫자 인덱스 어레이를 반환합니다
액세스 방법 액세스 가능한 필드 이름 또는 숫자 인덱스 디지털 인덱스만으로 액세스 할 수 있습니다
메모리 소비 더 큰 (반환 배열에는 두 개의 인덱스가 포함되어 있기 때문에) 더 작습니다
유연성 수치 인덱스 및 관련 인덱스가 동시에 필요한 시나리오에 적합한 높은 낮고 디지털 인덱스 액세스에만 적합합니다

3. 응용 시나리오 분석

mysql_fetch_array

예를 들어 필드에 유연하게 액세스 해야하는 시나리오에 적합합니다.

  • 필드 이름을 통해 데이터에 액세스해야하며 코드를 더 읽기 쉽습니다.

  • 더 나은 호환성을 가진 숫자 인덱스 및 필드 이름 인덱스를 모두 지원해야합니다.

  • 데이터의 양이 읽히고 메모리 사용 요구 사항이 높지 않습니다.

예:

 $result = mysql_query("SELECT id, name FROM users");
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
    echo "User ID: " . $row['id'] . ", Name: " . $row['name'] . "<br>";
}

mysql_fetch_row

메모리 요구 사항이 엄격하게 필요한 시나리오에 적합하고 다음과 같은 디지털 인덱스에 의해서만 액세스 할 수 있습니다.

  • 메모리 공간을 절약하기 위해 배치로 빅 데이터를 읽으십시오

  • 필드 데이터 만 사용되며 필드 이름으로 액세스 할 필요가 없습니다.

  • 고성능 요구 사항이있는 간단한 데이터 처리

예:

 $result = mysql_query("SELECT id, name FROM users");
while ($row = mysql_fetch_row($result)) {
    echo "User ID: " . $row[0] . ", Name: " . $row[1] . "<br>";
}

4. 요약

기능 이점 결점
mysql_fetch_array 유연한 액세스, 우수한 코드 가독성 더 많은 기억을 취합니다
mysql_fetch_row 낮은 메모리 사용, 더 나은 성능 디지털 인덱스에 의해서만 액세스되며, 코드 가독성이 좋지 않습니다

5. 코드 샘플 요약

 // 사용 mysql_fetch_array 연관 배열을 얻으십시오
$result = mysql_query("SELECT id, username FROM users");
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
    echo "ID: " . $row['id'] . ", Username: " . $row['username'] . "<br>";
}

// 사용 mysql_fetch_row 숫자 인덱스 어레이를 얻으십시오
$result = mysql_query("SELECT id, username FROM users");
while ($row = mysql_fetch_row($result)) {
    echo "ID: " . $row[0] . ", Username: " . $row[1] . "<br>";
}

6. 주목할만한 것들

  • MySQL_* 일련의 함수는 더 이상 사용되지 않았으며 대신 MySQLI 또는 PDO 확장을 사용하는 것이 좋습니다.

  • 이러한 오래된 기능은 코드의 보안 및 유지 가능성을 보장하기 위해 새로운 프로젝트에서 피해야합니다.