recherche

Maison  >  Questions et réponses  >  le corps du texte

Comment utiliser mysqli_fetch_array() deux fois ?

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粉917406009P粉917406009290 Il y a quelques jours730

répondre à tous(2)je répondrai

  • P粉076987386

    P粉0769873862024-03-26 11:21:31

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

    répondre
    0
  • P粉593536104

    P粉5935361042024-03-26 10:33:18

    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...
    }

    répondre
    0
  • Annulerrépondre