2010-12-09 3 views
0

J'ai un code que j'ai utilisé encore et encore avant et maintenant c'est en train de tout gâcher. Tout ce que je veux faire est de lister les informations de la base de données dans le tableau sur la page, mais maintenant il ne montrera qu'un résultat, au lieu de tous les résultats qu'il a trouvés.msql fetch array ne liste plus tous les résultats

<table> 
    <tr><td style="background-color:#009745; color:#FFFFFF"><center><strong>Address Book</strong></center></td></tr> 
    <tr> 
    <?php 
    $getids = mysql_query("SELECT id, first_name, last_name FROM accounts WHERE s1='$id' ORDER BY id DESC", $db); 
    if (mysql_num_rows($getids) > 0) { 
    while ($gids = mysql_fetch_array($getids)) { 
    $ab_id = $gids['id']; 
    $ab_fn = $gids['first_name']; 
    $ab_ln = $gids['last_name']; 
    } 
    ?> 
    <td><a href="#"><?= $ab_id ?></a> - <?= $ab_fn . " " . $ab_ln ?></td> 
    <?php 
    } else { 
    ?> 
    <td><center>No Contacts</center></td> 
    <?php 
    } 
    ?> 
    </tr> 
</table> 

aidez-moi s'il vous plaît.


Merci pour votre aide :)

J'adore ce site !! Je peux toujours obtenir des réponses quand j'en ai besoin.

+1

Quelle est votre question? Qu'est-ce qui ne fonctionne pas comme prévu? Ce qui se produit? –

+0

Exécutez la requête que vous avez utilisée dans la base de données et vérifiez le nombre d'enregistrements renvoyés – binoy

+0

$ id = "pwned"; drop table accounts; - "; // Assurez-vous que cet ID $ ne provient pas de l'entrée de l'utilisateur, ou si c'est le cas, que vous protégez votre base de données de l'injection SQL. – DampeS8N

Répondre

2

j'ai vu deux mauvaise chose

  1. vous utilisez mysql_fetch_array et plus tard, vous utilisez les index de chaîne pour imprimer le résultat
  2. imprimer les choses dans la boucle, il est prépondérant des valeurs et juste stocker dernière ligne

    if (mysql_num_rows($getids) > 0) { 
         while ($gids = mysql_fetch_assoc($getids)) { 
         $ab_id = $gids['id']; 
         $ab_fn = $gids['first_name']; 
         $ab_ln = $gids['last_name']; 
         echo '<td><a href="#">'.$ab_id.'</a> -'. $ab_fn.''.$ab_ln.' </td>'; 
         } 
    
+0

oh stakcoverflow problème de mise en forme permettez-moi de corriger –

+0

Merci ça a fonctionné :) J'ai essayé quelque chose de similaire auparavant, mais utilisait mysql_fetch_array et au lieu de mysql_fetch_assoc comme dit goreSplatter. Merci pour l'aide :) – yanike

1

Dans ce code désordre vous fermez la boucle while trop tôt:

while ($gids = mysql_fetch_array($getids)) { 
    $ab_id = $gids['id']; 
    $ab_fn = $gids['first_name']; 
    $ab_ln = $gids['last_name']; 
} 

Seule la dernière ligne extraite est utilisée par la suite. En outre, n'utilisez pas mysql_fetch_array si vous n'accédez pas aux indeces numériques de votre résultat. Utilisez mysql_fetch_assoc à la place.

+0

Exactement. C'est pourquoi le code est normalement indenté ;-) –

Questions connexes