2010-12-09 6 views
0

Ich habe einen Code, den ich immer und immer wieder benutzt habe und jetzt verhext es sich. Alles, was ich tun möchte, ist, Informationen aus der Datenbank in die Tabelle auf der Seite aufzulisten, aber jetzt wird nur ein Ergebnis angezeigt, anstatt alle Ergebnisse, die es gefunden hat.msql fetch array listet nicht mehr alle Ergebnisse auf

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

bitte helfen Sie mir damit.


Vielen Dank für Ihre Hilfe :)

ich diese Seite lieben !! Ich kann immer Antworten bekommen, wenn ich sie brauche.

+1

Was ist Ihre Frage? Was funktioniert nicht wie erwartet? Was geschieht? –

+0

Führen Sie die in der Datenbank verwendete Abfrage aus und überprüfen Sie, wie viele Datensätze zurückgegeben werden – binoy

+0

$ id = "pwned '; drop table accounts; -"; // Stellen Sie sicher, dass diese $ ID nicht von Benutzereingaben kommt, oder wenn Sie Ihre Datenbank vor SQL-Injection schützen. – DampeS8N

Antwort

2

Ich sah zwei Sache falsch

  1. Sie mysql_fetch_array verwenden und später Sie verwenden Stringindizes das Ergebnis
  2. Druck die Dinge in Schleife zu drucken es Werte überschrieben und erst letzte Zeile

    Speicherung
    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 Formatierungsproblem lassen Sie mich korrigieren –

+0

Vielen Dank, es hat funktioniert :) Ich habe versucht, etwas Ähnliches vorher aber war mit mysql_fetch_array und anstelle von mysql_fetch_assoc wie goreSplatter sagte. Danke für die Hilfe :) – yanike

1

In diesem unordentlichen Code sind Schließen Sie die while Schleife zu früh:

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

Nur die letzte abgerufene Zeile verwendet wird später. Verwenden Sie auch nicht mysql_fetch_array, wenn Sie nicht auf die numerischen Indizes Ihres Ergebnisses zugreifen. Verwenden Sie stattdessen mysql_fetch_assoc.

+0

Genau. Deshalb ist der Code normalerweise eingerückt ;-) –

Verwandte Themen