복붙노트

[SQL] 어떻게 mysqli_fetch_array는 ()를 두 번 사용할 수 있습니까?

SQL

어떻게 mysqli_fetch_array는 ()를 두 번 사용할 수 있습니까?

나는 행과 테이블의 열을 채우기 위해 DB의 항목을 사용하고 있습니다. 하지만 두 번 ()를 두 번 mysqli_fetch_array를 사용하여 SQL 반환 된 데이터에 액세스 할 수 없습니다. 이 작동하지 않습니다

//Copy the result
$db_res = mysqli_query( $db_link, $sql );
$db_res2=$db_res;

//Top row
while ($row = mysqli_fetch_array( $db_res, MYSQL_ASSOC))
{
        echo "<td>". $row['Title'] . "</td>";
}

//leftmost column
while ($row = mysqli_fetch_array( $db_res2, MYSQL_ASSOC))
{
                    echo "<tr>";
        echo "<td>". $row['Title'] . "</td>";
                    .....
                    echo "</tr>";
}

어떻게 같은 결과에 두 번 mysqli_fetch_array을 적용 할 수 있는가?

해결법

  1. ==============================

    1.당신은 동안 루프를 필요로하지 않으며, 당신은 전혀 사용 mysqli_fetch_array () 할 필요가 없습니다.

    당신은 동안 루프를 필요로하지 않으며, 당신은 전혀 사용 mysqli_fetch_array () 할 필요가 없습니다.

    당신은 mysqli_result 개체 자체 많은 시간에 간단하게 루프를 할 수 있습니다.

    //Top row
    foreach($db_res as $row) {
        echo "<td>". $row['Title'] . "</td>";
    }
    
    //leftmost column
    foreach($db_res as $row) {
        echo "<tr>";
        echo "<td>". $row['Title'] . "</td>";
        .....
        echo "</tr>";
    }
    

    그러나 디스플레이 로직에서 DB 로직을 분리해야하며, 배열로 모든 레코드를 검색하기 위해 DB 로직에 fetch_all (MYSQLI_ASSOC)를 사용하는 것이 가장 좋습니다이를 달성 할 수 있습니다.

  2. ==============================

    2.당신은 항상 출력 데이터 조작을 분리해야한다.

    당신은 항상 출력 데이터 조작을 분리해야한다.

    먼저 데이터를 선택합니다 :

    $db_res = mysqli_query( $db_link, $sql );
    $data   = array();
    while ($row = mysqli_fetch_assoc($db_res))
    {
        $data[] = $row;
    }
    

    참고 PHP 5.3 이후 대신 명시 적 루프의) (fetch_all 사용할 수 :

    $db_res = mysqli_query( $db_link, $sql );
    $data   = $db_res->fetch_all(MYSQLI_ASSOC);
    

    당신이 원하는대로 그런 다음 여러 번 사용 :

    //Top row
    foreach ($data as $row)
    {
        echo "<td>". $row['Title'] . "</td>";
    }
    
    //leftmost column
    foreach ($data as $row)
    {
        echo "<tr>";
        echo "<td>". $row['Title'] . "</td>";
        .....
        echo "</tr>";
    }
    
  3. ==============================

    3.예. mysqli_fetch_array ()는 앞으로 포인터 당신이 그것을 호출 할 때마다 이동합니다. 당신은 () 다시 mysqli_fetch_array를 시작 포인터를 다시 설정 한 후 전화를 () mysqli_data_seek 필요가있다.

    예. mysqli_fetch_array ()는 앞으로 포인터 당신이 그것을 호출 할 때마다 이동합니다. 당신은 () 다시 mysqli_fetch_array를 시작 포인터를 다시 설정 한 후 전화를 () mysqli_data_seek 필요가있다.

    그래서 함수를 두 번 호출하기 전에 수행 :

    mysqli_data_seek($db_res, 0);
    
  4. ==============================

    4.

    $squery = mysqli_query($con,"SELECT * FROM table");
    
    while($s = mysqli_fetch_array($query)){
     ....
    }
    // add this line
    mysqli_data_seek( $query, 0 );
    
    while($r = mysqli_fetch_array($query)){
     ...
    }
    

    시도 해봐.....

  5. from https://stackoverflow.com/questions/18720568/how-can-i-use-mysqli-fetch-array-twice by cc-by-sa and MIT license