2016-10-19 9 views
-1

Mit While-Schleife überspringt es die erste Zeile und verwendet while-Schleife, es zeigt die letzte Zeile. Der Code ist wie folgt:php überspringt die erste Zeile des Ergebnisses von mysqli

$query = "select * from sear where wrrnt_no like '%".$text."%'"; 
$result = $connection->query($query); 
echo "<table>"; 
while(($row = $result->fetch_assoc())!==null) { 
    $row = mysqli_fetch_row($result); 

    echo "<tr>"; 
    echo "<td width=".'10'.">"; 
    $warrent = $row[0]; 
    echo $warrent; 
    echo "</td>"; 
    echo "<td width=".'10'.">"; 
    $warrent_date = $row[1]; 
    echo $warrent_date; 
    echo "</td>"; 
} 

echo "</table>"; 

Vielen Dank für Ihre Antworten im Voraus.

+0

Vielleicht können Sie einen Index Counter in Ihrer Schleife für jede Schleife, und ignorieren Sie den ersten Grund. Nicht das Beste, aber wird funktionieren. – M98

+0

Dump Ihre Abfrageergebnisse und überprüfen Sie Ergebnisse, vielleicht ist es etw mit Ihrer Abfrage falsch. –

+0

Ihre Frage ist unklar: ist die Tatsache, dass es Zeilen (jede Sekunde) überspringt das Problem, über das Sie fragen, oder möchten Sie eigentlich die erste Zeile überspringen? – arkascha

Antwort

2

Das Problem ist, dass Sie die Zeile zweimal abrufen. Einmal mit $result->fetch_assoc und ein anderes Mal mit mysqli_fetch_row.

Sie müssen also diese Zeile entfernen: $row = mysqli_fetch_row($result);, weil die Zeile bereits abgerufen wird.

Ich denke, es ist nicht die letzte oder erste Zeile, die fehlt, aber die Hälfte der Zeilen aus der Tabelle. In einem Fall beginnend mit dem ersten und in einem anderen Fall beginnend mit dem zweiten.

AKTUALISIERT Wenn Sie benötigen numerischen Index haben wollen Sie fetch_row verwenden. So ändern Sie den Code zu:

$query = "select * from sear where wrrnt_no like '%".$text."%'"; 
$result = $connection->query($query); 
echo "<table>"; 
while(($row = $result->fetch_row())!==null) 
{ 

    $warrent = $row[0]; 
    //...the rest of echo here 
} 

Aber ich empfehle fetch_assoc zu benutzen und danach den Namen der Spalte wie folgt zu verwenden: $warrent = $row['wrrnt_no']; (wenn das, was Sie brauchen)

+0

Die Frage ist noch nicht klar in meinen Augen ... – arkascha

+0

@arkascha Für mich ist klar. Wenn er wie im Beispiel mit 'for' versucht, erhält er nicht das erste Ergebnis aus der Tabelle. Wenn er zu "Do-While" wechselt, erhält er nicht die letzten Ergebnisse aus der Tabelle gedruckt. Und das Problem ist, dass er zweimal von db holt. –

+0

Es ist sicherlich falsch, zweimal sicher zu holen. Aber für mich ist das eigentliche Ziel unklar, also was das OP eigentlich erreichen will. – arkascha

Verwandte Themen