亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

如何使用mysqli_fetch_array()兩次?
P粉917406009
P粉917406009 2024-03-25 19:05:28
0
2
1046

我正在使用資料庫(kù)中的條目來(lái)填充表中的行和列。但我無(wú)法使用 mysqli_fetch_array() 兩次存取 SQL 傳回的資料。我需要多次循環(huán) mysqli 結(jié)果。這不起作用:

//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>";
}

如何對(duì)相同結(jié)果套用 mysqli_fetch_array 兩次?

P粉917406009
P粉917406009

全部回覆(2)
P粉076987386

您應(yīng)該始終將資料操作與輸出分開(kāi)。

首先選擇您的資料:

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

請(qǐng)注意,從 PHP 5.3 開(kāi)始,您可以使用 fetch_all() 而不是明確循環(huán):

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

然後根據(jù)需要多次使用它:

//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>";
}
P粉593536104

您不需要 while 循環(huán),也根本不需要使用 mysqli_fetch_array()!

您可以簡(jiǎn)單地在 mysqli_result 物件本身上循環(huán)多次。它實(shí)作了 Traversable 接口,允許在 foreach 中使用。

//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>";
}

但是,您應(yīng)該將資料庫(kù)邏輯與顯示邏輯分開(kāi),為了實(shí)現(xiàn)這一點(diǎn),最好在資料庫(kù)邏輯中使用 fetch_all(MYSQLI_ASSOC) 將所有記錄檢索到陣列中。

如果將所有資料提取到一個(gè)陣列中,則可以根據(jù)需要多次循環(huán)該數(shù)組。

$data = $db_res->fetch_all(MYSQLI_ASSOC);

foreach($data as $row) {
    // logic here...
}
最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板