mysql_fetch_array while-Schleife. Wie funktioniert es?
Habe ich gelesen, die über die Funktion auf php.net und das hat noch nicht meine Frage beantwortet. Ich weiß ein Anfänger Menge an C und ich habe gerade angefangen mit php. Normalerweise in C würde man eine while-Schleife muss es sein, eine Bedingung Voraus, die Schleife zu einem Punkt, wo es nicht mehr gültig sein, etwa so:
while (x >= 10)
{
printf("...";
printf("x \n";
x++;
}
Aber in meinem php-Skript, dass ich für eine pm-message-system habe ich eine while-Schleife wie diese:
while($row2 = mysql_fetch_array($query))
gefolgt von:
{
echo "<table border=1>";
echo "<tr><td>";
echo "Message #: ";
echo $row['id'];
echo "</td></tr>";
echo "<tr><td>";
echo "To: ";
echo $row['to'];
echo "</td></tr>";
echo "<tr><td>";
echo "From: ";
echo $row['from'];
echo " ";
echo "</td></tr>";
echo "<tr><td>";
echo "Message: ";
echo $row['message'];
echo "</td></tr>";
echo "</br>";
?>
<form action="<?php echo $_SERVER['PHP_SELF']?>" method="post">
<table border="0">
<tr><td colspan=2></td></tr>
<tr><td></td><td>
<input type="hidden" name="id" maxlength="32" value = "<?php echo $row['id']; ?>">
</td></tr>
<tr><td colspan="2" align="right">
<input type="submit" name="delete" value="Delete PM # <?php echo $row['id']; ?>">
</td>
<td colspan="2" align="right">
<input type="submit" name="reply" value="Reply to <?php echo $row['from']; ?>">
</td></tr>
</table>
<?php } ?>
Wie funktioniert das genau, von einem C-hintergrund würde es fast scheinen, wie dieser bleiben würde, an der gleichen Stelle, den Ausdruck des gleichen "array fetch" 'Zeile' aus der gleichen "$Abfrage" jedes mal, wenn wir gehen durch die Schlaufe....
Gibt es eine Möglichkeit, kann ich dies Schreibe, um mir einen besseren logischen Verständnis von, was Los ist? wie gesagt:
$i=0;
while ($row = ($i+mysql_fetch_array($query)) {
...
...
$i++;}
Ich weiß, dass das wahrscheinlich nicht funktionieren, aber wie funktioniert das Inkrement selbst? Und gibt es eine Möglichkeit, es zu schreiben, wo es hätte eigentlich eine Art Schrittweite sichtbar in dem code?
Danke
- Ich würde Lesen, auf den PHP-Dokumentation für diese, um ein gutes Verständnis. Die Funktion ist im Grunde arbeitet auf eine Ressource behandeln, um Ihre Abfrage-Ergebnisse. Die Funktion gibt FALSE zurück, wenn es keine Ergebnisse mehr zurück und so ist die while-Schleife zu FALSE ausgewertet wird.
- Bitte aufhören mit schreiben neuen code mit dem alten
mysql_*
Funktionen. Sie werden nicht mehr gepflegt und Gemeinschaft hat begonnen, die deprecation-Prozess. Stattdessen sollten Sie lernen, über vorbereitete Anweisungen und verwenden Sie entweder PDO oder MySQLi. Wenn Sie die Pflege zu lernen, hier ist ein ziemlich guter PDO-bezogenen tutorial.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Jedes mal, wenn Sie rufen
mysql_fetch_array
es holt die nächste Zeile aus der Abfrage. Dasswhile
Schleife hält "true" zurückgeben, während diemysql_fetch_array
noch etwas übrig zuweisen, um die variable$row2
. Sobald es aus den Zeilen, es hat nichts mehr zu geben Sie die variable, und false zurückgegeben.ETA: in Bezug auf das Letzte Stück, die Sie erwähnt haben, können Sie eine variable Schrittweite in jeder iteration der Schleife wie in deinem Beispiel, aber es ist nicht völlig notwendig. Sie können auch einfach sehen, wie viele Zeilen zurückgegeben wurden, etwas zu tun, wie
$var = mysql_num_rows($data)
vor Ihrerwhile
Schleife.mysql_fetch_array
- Funktion innerhalb eines Objekts, um durch zu gehen, und ordnen Sie die Meldungen auf der Seite sind in alphabetischer Ordnung, in Ordnung, um die Nachrichten der Gruppe aus den gleichen Leuten zusammen? Wenn ja, wäre es ein einfacher Weg, dies zu tun, ohne zu speichern Sie die $row variable als ein Objekt, oder wäre das tatsächlich machen, meinen code sauberer und einfacher zu verstehen, was Los ist??? Und würde die Objekte langsam nach unten meine Seite? Danke$group
), dann überprüfen Sie, bevor Sie meine Ausgabe: if ($row2['name']!=$group) { $Gruppe = $row2['name']; // Mehr code hier }vielleicht kann folgende Funktion geben Sie eine kleine Beschreibung über das "wie mysql_fetch_array while-Schleife arbeiten ?"
Können Sie denken
mysql_fetch_array()
ähnlich wie ein Datei-lese-Funktion, die zurückgegeben return eine neue Zeile jeder Zeit und return EOF, wenn es Sie trifft das Ende. Statt EOF, obwohl,mysql_fetch_array()
FALSE(0) zurück.In einen booleschen Ausdruck, PHP wertet alle nicht-0-Wert als TRUE, so ist die einfache syntax, die unten durchläuft, ist die Zuweisung der Zeile an die $row variable jedes mal, bis wir das Ende des Datensatzes:
PHP IDEs tatsächlich beschweren sich über eine Zuweisung in einer Bedingung, und dies ist, wie Sie sollten schreiben Sie den gleichen code zu vermeiden, die Meldung:
Vielleicht sieht diese Struktur mehr vertraut.
mysql_fetch_array() ist eine Funktion, die Sie aufrufen müssen, wenn Sie möchten, um eine Zeile aus der resultierte ausgeführten query, so kann man es beschreiben "mysql_fetch_array — Fetch a result row ein assoziatives array, als numerisches array oder beides"
Das Szenario ist dies : Es liefert ein array das dem aktuellen Datensatz entspricht und bewegt den internen datenzeiger vor.
Weitere Klarstellung :
1) Was ist der Typ von $Ergebnis ?
2) Welche Art von mysql_fetch_array verwendet, um zu arbeiten ?
Lassen Sie mich diese Frage beantworten,
1) $Ergebnis führte zu einer variable aus mysql_query () und diese Funktion gibt Ergebnisse typisiert als mysql result und dieser Art können nur erstellt werden, durch aufrufen von 7 Funktionen :
mysql_db_query(), mysql_list_dbs(), mysql_list_fields(), mysql_list_processes(), mysql_list_tables(), mysql_query(), mysql_unbuffered_query()
und kann durch mehrere Funktionen wie
mysql_fetch_array() and mysql_db_name() and others
2)Die Beschreibung der Funktion ist :
array mysql_fetch_array ( resource $result [, int $result_type = MYSQL_BOTH ] )
sehen mysql_fetch_array Doc