Comment utiliser mysqli_fetch_array() deux fois ?
P粉917406009
P粉917406009 2024-03-25 19:05:28
0
2
812

J'utilise les entrées de la base de données pour remplir les lignes et les colonnes du tableau. Mais je ne peux pas accéder aux données renvoyées par SQL en utilisant mysqli_fetch_array() deux fois. Je dois parcourir les résultats de MySQLi plusieurs fois. Cela ne fonctionne pas :

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

Comment appliquer mysqli_fetch_array deux fois sur le même résultat ?

P粉917406009
P粉917406009

répondre à tous(2)
P粉076987386

Vous devez toujours séparer la manipulation des données de la sortie.

Sélectionnez d'abord vos données :

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

Notez qu'à partir de PHP 5.3, vous pouvez utiliser fetch_all() au lieu d'une boucle explicite :

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

Utilisez-le ensuite autant de fois que nécessaire :

//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

Vous n'avez pas besoin de while 循环,也根本不需要使用 mysqli_fetch_array() !

Vous pouvez simplement l'utiliser dans mysqli_result 对象本身上循环多次。它实现了 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>";
}

Cependant, vous devez séparer la logique de la base de données de la logique d'affichage, pour y parvenir il est préférable d'utiliser fetch_all(MYSQLI_ASSOC) dans la logique de la base de données pour récupérer tous les enregistrements dans un tableau.

Si vous extrayez toutes les données dans un tableau, vous pouvez parcourir le tableau autant de fois que vous le souhaitez.

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

foreach($data as $row) {
    // logic here...
}
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal