PHP

* PHP foreach vs mysqli_fetch 비교

큰세상2000 2022. 1. 12. 15:39
반응형


●    mysqli_fetch ~ while : 1번 loop 돌리면 바로 사용 불가능

$sql = "SELECT seq, name FROM test_names";
$result_name = mysqli_query($dbcon, $sql);
$result_name_clone = $result_name;

echo ('<br/>DB 검색후 이름명 1차 출력 : mysqli_fetch result_name 1st ▼ <br/>');
while ($row = mysqli_fetch_assoc($result_name)) {
    print_r($row);
    echo '<br>';
}

     DB 검색후 이름명 1차 출력 : mysqli_fetch result_name 1st ▼
     Array ( [seq] => 1 [name] => lee )
     Array ( [seq] => 2 [name] => kim )



echo ('<br/>DB 검색없이 이름명 2차 출력 : mysqli_fetch result_name 2nd ▼ <br/>');
while ($row2 = mysqli_fetch_assoc($result_name)) {
    print_r($row2);
    echo '<br>';
}

     DB 검색없이 이름명 2차 출력 : mysqli_fetch result_name 2nd ▼
     < 결과없음 >



echo ('<br/>DB 검색없이 이름명 복사본 출력 : mysqli_fetch result_name clone ▼ <br/>');
while ($row3 = mysqli_fetch_assoc($result_name_clone)) {
    print_r($row3);
    echo '<br>';
}

     DB 검색없이 이름명 복사본 출력 : mysqli_fetch result_name clone ▼
     < 결과없음 >

 



●    foreach : 1번 loop 돌려도 언제든지 재사용 

$sql = "SELECT seq, name FROM test_nation";
$result_nation = mysqli_query($dbcon, $sql);
$result_nation_clone = $result_nation;

echo ('<br/>DB 검색후 나라명 1차 출력 : foreach result_nation 1st ▼ <br/>');
foreach ($result_nation as $row4) {
    echo $row4['seq'] . ', name : ' . $row4['name'] . '<br>';
}

     DB 검색후 나라명 1차 출력 : foreach result_nation 1st ▼
     1, name : korea
     2, name : japan



echo ('<br/>DB 검색없이 나라명 2차 출력 : foreach result_nation 2nd ▼ <br/>');
foreach ($result_nation as $row5) {
    echo $row5['seq'] . ', name : ' . $row5['name'] . '<br>';
}

     DB 검색없이 나라명 2차 출력 : mysqli_fetch result_nation 2st ▼
     1, name : korea
     2, name : japan



echo ('<br/>DB 검색없이 나라명 복사본 출력 : foreach result_nation clone ▼ <br/>');
foreach ($result_nation as $row6) {
    echo $row6['seq'] . ', name : ' . $row6['name'] . '<br>';
}

     DB 검색없이 나라명 복사본 출력 : mysqli_fetch result_nation clone ▼
     1, name : lee
     2, name : kim



echo ('<br/>DB 검색없이 처음 검색한 이름명 출력 : foreach result_name ▼ <br/>');
foreach ($result_name as $row7) {
    echo $row7['seq'] . ', name : ' . $row7['name'] . '<br>';
}

     DB 검색없이 처음 검색한 이름명 출력 : foreach result_name ▼
     1, name : lee
     2, name : kim

 


● mysqli_fetch 재사용 : mysqli_data_seek 으로 레코드셋 처음으로 이동

// 레코드셋 처음으로 이동하기
mysqli_data_seek($result_name, 0);

echo ('<br/>DB 검색없이 이름명 출력 3rd : mysqli_fetch result_name 3rd ▼ <br/>');
while ($row8 = mysqli_fetch_assoc($result_name)) {
    print_r($row8);
    echo '<br>';
}

     DB 검색없이 이름명 출력 3rd : mysqli_fetch result_set 3rd ▼
     Array ( [seq] => 1 [name] => lee )
     Array ( [seq] => 2 [name] => kim )
반응형