Fehlermeldung, die ich nicht versteh!

Dac-XP

Erfahrenes Mitglied
Hi!

Ich hab mal mit PHP angefangen und habe jetzt eine Datenbank erstellt und wollte darauf zugreifen und auslesen.

Ich habe mal einen kurzen Abschnitt erstellt, in dem die Fehler auftauchen:

<?

$verbindung = mysql_connect("localhost", "root", "");

if(!$verbindung)
{
echo"keiner Verbindung";
exit;
}

$abfrage = "SELECT Name, Nachricht FROM buch";
$erg = mysql_db_query("book", $abfrage, $verbindung);

list($Name, $eintrag)= mysql_fetch_row($erg);

while(list($Name, $Art) = mysql_fetch_row($erg))
{
echo "$Name hat folgende Nachricht hinterlassen &eintrag<br>\n";
}

mysql_close(verbindung);
?>

Wenn ich das Skript ausführe erscheint folgende Fehlermeldung:
Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in D:\php5xampp-dev\htdocs\gbwrite.php on line 14

Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in D:\php5xampp-dev\htdocs\gbwrite.php on line 16

Warning: mysql_close(): supplied argument is not a valid MySQL-Link resource in D:\php5xampp-dev\htdocs\gbwrite.php on line 21

Kann mir da mal jemand helfen?

Gruß Hacker!:-)
 
probiere mal statt mysql_fetch_row ein mysql_fetch_array.

desweiteren ist das kein schöner Quellcode oder ich versteh ihn nicht ganz.

evtl ein Vorschlag
PHP:
mysql_select_db('buch'); // Würde ich global machen, dann brauchste net immer das in jedes Query schreiben. Find ich persöhnlich unübersichtlich bei einem langem Quelltext.

$erg = mysql_query('SELECT Name, Nachricht FROM buch');

for($i=0;$infos[$i]=mysql_fetch_array($erg);$i++){
  echo $infos[$i]['Name'].' hat folgende Nachricht hinterlassen '.$infos[$i]['Nachricht'].'<br>' ;
}
 
Zuletzt bearbeitet:
Der Fehler liegt nicht bei mysql_fetch_row();

sondern bei der Übergabe eines leeren Querys an mysql_fetch_row();

Lösung:

PHP:
<?

$verbindung = mysql_connect("localhost", "root", "") or die('Keine DB verbindung');

$abfrage = "SELECT Name, Nachricht FROM buch";
$erg = mysql_db_query("book", $abfrage, $verbindung);

if(mysql_num_rows($erg) > 0)
{
    list($Name, $eintrag)= mysql_fetch_row($erg);

    while(list($Name, $Art) = mysql_fetch_row($erg))
    {
        echo "$Name hat folgende Nachricht hinterlassen &eintrag<br>\n";
    } 
}else{
    echo('Keine Einträge vorhanden');
}
mysql_close(verbindung);
?>

Gruss Danilo
 
PHP:
list($Name, $eintrag)= mysql_fetch_row($erg); 

while(list($Name, $Art) = mysql_fetch_row($erg)) 
{ 
    echo "$Name hat folgende Nachricht hinterlassen &eintrag<br>\n"; 
}
Das führt übrigens dazu, dass konsequent der erste Datensatz unterschlagen wird! Durch das mysql_fetch_row() vor Beginn der While-Schleife wird der erste Datensatz geholt und im Kopf der While-Schleife gleich der Zweite, welcher dann auch ausgegeben wird.

snuu
 
Zurück