현재 위치: > 최신 기사 목록> mysql_fetch_array 및 foreach 루프를 사용하는 방법

mysql_fetch_array 및 foreach 루프를 사용하는 방법

gitbox 2025-05-29

1. mysql_fetch_array 의 기본 사용

mysql_fetch_array 함수는 결과 세트에서 배열로 행을 행사하고 기본적으로 연관과 색인을 포함하는 배열을 반환합니다.

 $result = mysql_query("SELECT * FROM users");
while ($row = mysql_fetch_array($result)) {
    print_r($row);
}

여기서 $ 행은 각 루프에서 얻은 레코드이며 유형은 배열입니다.

2. Foreach는 단일 레코드의 배열을 가로 지른다

mysql_fetch_array 에서 레코드를 얻으면 일반적 으로이 데이터의 모든 필드를 반복하기 위해 Foreach를 사용합니다.

 while ($row = mysql_fetch_array($result)) {
    foreach ($row as $key => $value) {
        echo "$key => $value<br>";
    }
}

$ 행 자체가 배열이기 때문에 이것은 정확합니다.

3. 쿼리 결과에는 Foreach를 직접 사용할 수 없습니다

mysql_fetch_array는 단일 레코드를 반환하며 쿼리 결과 리소스를 위해 Foreach를 직접 사용할 수 없습니다.

 foreach ($result as $row) {
    // 잘못된 사용,$result자원입니다,배열이 아닙니다
}

이 글쓰기 방법은 잘못되었으며 오류로 이어질 것입니다.

4. 올바른 조합 방법 : 먼저 while 루프를 사용하여 모든 데이터를 배열로 읽은 다음 Foreach를 사용하여 Traverse

Foreach를 사용하여 모든 레코드를 가로 지르려면 모든 결과를 먼저 배열로 읽은 다음 트래버스하는 것입니다.

 $rows = [];
while ($row = mysql_fetch_array($result)) {
    $rows[] = $row;
}

foreach ($rows as $record) {
    // 각 레코드를 처리하십시오
    echo $record['username'] . "<br>";
}

이렇게하면 Foreach 의 모든 레코드를 쉽게 처리 할 수 ​​있습니다.

5. MySQL_Assoc을 사용하여 데이터 중복성을 피하십시오

기본적으로 mysql_fetch_array 에 의해 반환 된 배열에는 숫자 인덱스와 관련 인덱스가 모두있어 데이터 중복이 발생합니다. 연관 배열 만 얻는 것이 좋습니다.

 while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
    // $row연관 배열 만 포함합니다
}

이러한 방식으로 배열은 더 단순하고 Foreach Traversal이 더 편리합니다.

6. 전체 코드를 샘플링하십시오

 <?php
// 데이터베이스에 연결하십시오
$link = mysql_connect("gitbox.net", "username", "password");
mysql_select_db("testdb", $link);

// 쿼리 데이터
$result = mysql_query("SELECT id, username, email FROM users");

// 모든 데이터를 읽으십시오
$rows = [];
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
    $rows[] = $row;
}

// 사용foreach모든 기록을 반복하십시오
foreach ($rows as $record) {
    echo "사용자ID: " . $record['id'] . "<br>";
    echo "사용자名: " . $record['username'] . "<br>";
    echo "우편: " . $record['email'] . "<br><hr>";
}

// 연결을 닫으십시오
mysql_close($link);
?>