mysql_fetch_array 함수는 결과 세트에서 배열로 행을 행사하고 기본적으로 연관과 색인을 포함하는 배열을 반환합니다.
$result = mysql_query("SELECT * FROM users");
while ($row = mysql_fetch_array($result)) {
print_r($row);
}
여기서 $ 행은 각 루프에서 얻은 레코드이며 유형은 배열입니다.
mysql_fetch_array 에서 레코드를 얻으면 일반적 으로이 데이터의 모든 필드를 반복하기 위해 Foreach를 사용합니다.
while ($row = mysql_fetch_array($result)) {
foreach ($row as $key => $value) {
echo "$key => $value<br>";
}
}
$ 행 자체가 배열이기 때문에 이것은 정확합니다.
mysql_fetch_array는 단일 레코드를 반환하며 쿼리 결과 리소스를 위해 Foreach를 직접 사용할 수 없습니다.
foreach ($result as $row) {
// 잘못된 사용,$result자원입니다,배열이 아닙니다
}
이 글쓰기 방법은 잘못되었으며 오류로 이어질 것입니다.
Foreach를 사용하여 모든 레코드를 가로 지르려면 모든 결과를 먼저 배열로 읽은 다음 트래버스하는 것입니다.
$rows = [];
while ($row = mysql_fetch_array($result)) {
$rows[] = $row;
}
foreach ($rows as $record) {
// 각 레코드를 처리하십시오
echo $record['username'] . "<br>";
}
이렇게하면 Foreach 의 모든 레코드를 쉽게 처리 할 수 있습니다.
기본적으로 mysql_fetch_array 에 의해 반환 된 배열에는 숫자 인덱스와 관련 인덱스가 모두있어 데이터 중복이 발생합니다. 연관 배열 만 얻는 것이 좋습니다.
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
// $row연관 배열 만 포함합니다
}
이러한 방식으로 배열은 더 단순하고 Foreach Traversal이 더 편리합니다.
<?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);
?>