SQL einträge werden nicht angezeigt

redX

Erfahrenes Mitglied
Ok. Ich beginne meinen Post mit der Fehlermeldung

Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in /home/www/web114/html/php/pages/fun-show.php on line 50

Diese Meldung erscheint wenn ich die Daten, die ich aus der SQL DB ausgelesen habe ausgeben möchte.

So sieht der Code aus:

PHP:
$result = mysql_query("SELECT * FROM funnystuff WHERE what='".$what."' ORDER BY id");

//=================
// Weiterer Code
//=================

while ($comment = mysql_fetch_row ($result))
{
	echo $comment[1]." schrieb:<br>";
	echo $comment[2]."<br>";
	echo "_____________________<br><br>";
}

Der Fehler liegt auf der Zeile mit der while-Schleife.
Die verbindung zum SQL Server und der DB wurde erfolgreich hergestellt..
Nun weiss ich aber nicht wiso es diesen Fehler ausgibt.
 
Das fetch_row hat mich auch immer genervt. Eventuell ist das Leerzeichen zwischen row und ($result...... ) der Fehler. Versuch ansonsten mal das:

PHP:
while ($row=mysql_fetch_array($result, MYSQL_Num))
 
Hi!

Der Feher liegt daran, dass 0 Zeilen aus der Datenbank ausgelesen wurden! wenn das Feld "what" ein String ist, versuche mal anstatt dem '=', mal 'LIKE'! Für Strings nimmt man am besten immer LIKE; weil = zu Fehlern führen kann! Prüfe auch nach, ob er auch eine Zeile auslesen kann, mit den Daten, die du übermittelst! Ansonsten kann es nur fehlschlagen! Prüfe auch bevor du while(mysql_fetch_..... machst, ob überhaupt eine zeile ausgelesen wurde!

Besser und komfortabler ist außerdem immer while($comment = mysql_fetch_array($result))! Jetzt wird bei jedme Schleifendurchlauf die nächste Zeile ausgewählt, bis dass er die letzte verwendet hat! In der while()-Schliefe kannst du über $comment["FELDNAME"] den entsprechenden Wert abrufen!
Hier ein Beispiel aus meinem News-Script:
Code:
...
$SQLquery = "SELECT * FROM news ORDER BY id DESC";
$result = mysql_query($db_Con, $SQLquery);

while( $news = mysql_fetch_array($result) )
{
	echo "<table cellpadding=\"10\">";
	echo "<tr><td>";

	echo "<br><table border=\"0\" cellspacing=\"7\" cellpadding=\"0\">";
	echo "<tr><td><img src=\"images\line.bmp\" width=\"450\" height=\"2\"></td></tr>";
	echo "<tr><td>&nbsp;&nbsp;" . $news["posttime"] . " <b>..::.. " . $news["topic"] . " ..::..</b> posted by <b>" . GetAuthor($news["author_id"]) . "</b></td></tr>";
	echo "<tr><td><img src=\"images\line.bmp\" width=\"130\" height=\"2\"></td></tr>";
	echo "<tr><td>" . $news["message"] . "</td></tr>";
	echo "<tr><td><img src=\"images\line.bmp\" width=\"130\" height=\"2\"></td></tr>";
	echo "<tr><td><u>Links:</u></td></tr>";
...

Hoffe ich konnte dir helfen!

Mfg, G-Man
 
Zuletzt bearbeitet:
PHP:
mysql_query("SELECT * FROM funnystuff WHERE what='".$what."' ORDER BY id");
Das Problem besteht darin, dass du wenn du das Query direkt in die Klammer von mysql_query packst, das nicht unterbrechen darfst. Machst du dies trotzdem geht die Funktion davon aus, dass das Query beim ersten " anfängt und beim zweiten " aufhört. Du siehst das Problem?

Lösung:
Das Query vorher in eine Variable packen. Da kannst du den String so oft unterbrechen wie du magst und diese Variable packst du dann als Parameter in die mysql_query Funktion.
 
Das Problem besteht darin, dass du wenn du das Query direkt in die Klammer von mysql_query packst, das nicht unterbrechen darfst. Machst du dies trotzdem geht die Funktion davon aus, dass das Query beim ersten " anfängt und beim zweiten " aufhört
Ähm, sicher? Eigentlich bastel ich meine Queries immer nach demselben Schema zusammen und die funktionieren allesamt! Oder habe ich was falsch verstanden?
 
Original geschrieben von ludz
Ähm, sicher? Eigentlich bastel ich meine Queries immer nach demselben Schema zusammen und die funktionieren allesamt! Oder habe ich was falsch verstanden?
Meines Wissens nach und auch einigen Erfahrungen nach hast du Probleme wenn du innerhalb der Klammern von mysql_query dern String unterbrichst.
 
Original geschrieben von redX
PHP:
$result = mysql_query("SELECT * FROM funnystuff WHERE what='".$what."' ORDER BY id");
Es Fehlt hier die Datenbankverbindung:
PHP:
$datenbankname = "Name der DB";
$datenbankverbindung = mysql_connect ("host", "user", "password");
$result = mysql_query($datenbankname, "SELECT * FROM funnystuff WHERE what='$what' ORDER BY id", $datenbankverbindung);
($comment = mysql_fetch_array ($result)) 
{ ...
 
Zuletzt bearbeitet:
Re: Re: SQL einträge werden nicht angezeigt

Original geschrieben von Xaicon
Es Fehlt hier die Datenbankverbindung:
Es ist nicht zwingend nötig, einen Verbindungsparameter anzugeben wenn man sowieso nur mit einer Datenbank arbeitet. Außerdem erwartet die Funktion mysql_query() maximal zwei Parameter, wie hier deutlich nachzulesen. Ein vorangestelter Parameter zum Datenbanknamen kommt mir gänzlich spanisch vor ;).
 
Re: Re: Re: SQL einträge werden nicht angezeigt

Original geschrieben von Tim Comanns
Es ist nicht zwingend nötig, einen Verbindungsparameter anzugeben wenn man sowieso nur mit einer Datenbank arbeitet. Außerdem erwartet die Funktion mysql_query() maximal zwei Parameter, wie hier deutlich nachzulesen. Ein vorangestelter Parameter zum Datenbanknamen kommt mir gänzlich spanisch vor ;).
Da hab ich wohl nicht genau aufgepasst, und drei Zeichen zuviel gesehen.
Da ich schon immer den Befehl mysql_db_query benutze ist für mich das ("dbname, "dbquery", "dbverbindung") selbstverständlich.
Und da sind die ersten beiden Strings zwingend notwendig. ;)
 
Die Datenbankverbindung kann nicht den Fehler sein. Ich habe bei der Verbindung zu SQL und zur DB "or die" befehle eingebaut.

Prüfe auch bevor du while(mysql_fetch_..... machst, ob überhaupt eine zeile ausgelesen wurde!
Wie kann ich nachschauen ob schon etwas in der Variabel steht?

Die anderen beiden Tipps habe ich mal versucht, aber es funktioniert immer noch nicht.

PHP:
include("./pages/sql-shit.php");
$conn_id = sql_connection();
db_connection();

$query = "SELECT * FROM funnystuff WHERE what like \'".$what."\' ORDER BY id";
$result = mysql_query($query);

//================= 
// Weiterer Code 
//=================


while ($comment = mysql_fetch_array($result))
{
	echo $comment["nick"]." schrieb:<br>";
	echo $comment["text"]."<br>";
	echo "_____________________<br><br>";
}

Die Fehlermeldung:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/www/web114/html/php/pages/fun-show.php on line 51

Hat noch mal jemand eine Idee woran es liegen könnte?
 
Zurück