Zitat:
Zitat von Jolka248 Hier gibt's doch ein paar Leute mit php-Kenntnissen. @jo, Archer(eingerostet?), Need(?), ...
Ich muss mir gerade php beibringen und will eine Datenbankanfrage machen.
Kann mir jemand erklären warum ich da in einer Endlosschleife hänge?
Dabei steht in der Beschreibung zu mysql_fetch_array folgendes:
Wenn der Datenzeiger automatisch vorwärts geht, warum gibt er mir also immer und immer wieder nur den ersten Datensatz aus? Ich komm da einfach nicht drauf klar. |
PHP-Code:
<?php
mysql_connect("127.0.0.1", "root", "") or die("Verbindung zur Datenbank konnte nicht hergestellt werden");
echo "Verbindung zur Datenbank hergestellt<p>";
$schema = "zitadelle";
mysql_select_db($schema) or die("Datenbank <i>" .$schema ."</i> konnte nicht ausgewählt werden");
echo "Datenbank " .$schema ." ausgewählt<p>";
// SQL-Query und Ergebnis der Abfrage in Array speichern
$sql = "SELECT * FROM author";
$ergebnis = mysql_query($sql);
while($zeile = mysql_fetch_array($ergebnis)) {
$auth = $zeile["author"];
echo "$auth, <br>";
}
mysql_close();
echo "<p>Verbindung zur Datenbank geschlossen";
?>
Ganz wichtig:
PHP-Code:
$sql = "SELECT * FROM author";
$ergebnis = mysql_query($sql);
Wenn du mysql_query mit in die Schleife reinnimmst setzt er den SQL Befehl immer und immer wieder ab, deswegen die Endlosschleife.
Er lädt also erstmal den kompletten Datensatz in $ergebnis. Also alle selektierten Einträge.
Mit mysql_fetch_array wird $ergebnis dann auseinander gezogen und in den verschiedenen Datensätzen aufgeteilt.
Ich bin davon ausgegangen das deine Tabelle "author" heißt und die Überschrift der Spalte "author" ... wichtig Groß/Kleinschreibung in der Zeile $auth = $zeile["author"]; achten... und Spaltenüberschriften niemals doppelt nehmen.