mysql_num_rows() Fehlermeldung

hallo

ich habe ein Forum mit Hilfe von Martin Mayers Tutorial (http://www.php-resource.de/tutorials/read/35/1/) geschrieben.
Es hat auch alles geklapt.
Nun möchte ich mein Forum erweitern. Ich möchte die Antworten in den einzelnen Threads zählen lassen.
Ich hab schon mal eine SQL Abfrage geschrieben, aber ich kirege da ein Fehlermeldung.

$res3 =mysql_query(„select * from antwort where fid=“.$_GET[„fid“]." AND tid=".$_GET[„tid“]) or die(mysql_error());
$posts=mysql_num_rows($res3); // Die Fehler meldung lautet: mysql_num_rows(): supplied argument is not a valid MySQL result resource

Ich weiß net was bei meine Abfrage falsch ist, vieleicht könnt ihr jan mir weiter helfen

Danke

Hallo

probiers mal mit Klammern (was anderes fällt mir nicht ein):

$res3 =mysql_query(„select * from antwort where (fid=".$_GET[„fid“]." AND tid=".$_GET[„tid“].")“) or die(mysql_error());

Ich würde allerdings empfehlen, das Zählen von Mysql durchführen zu lassen:

$res3 =mysql_query(„select count(*) from antwort where (fid=".$_GET[„fid“]." AND tid=".$_GET[„tid“].")“) or die(mysql_error());

$anzahl=mysql_result($res3,0);

$res3 =mysql_query(„select count(*) from antwort where
(fid=".$_GET[„fid“]." AND
tid=".$_GET[„tid“]."
)
“) or die(mysql_error());

$anzahl=mysql_result($res3,0);

Leider funktioniert das auch net.
mysql_error() gibt mir das als Fehlermeldung:
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near ‚)‘ at line 1

hallo

gib doch einfach mal die SQL-Abfrage mit

echo „select * from antwort where fid=“.$_GET[„fid“]." AND tid=".$_GET[„tid“];

aus. Das hilft mir meist, da oft die $_GET - Parameter nicht das enthalten, was erwartet wird.

Gruß
Michi

Den Fehler, den du beschrieben hast, erhältst du, weil MySQL als leeres Recordset immer NULL zurückgibt, welches MySQLNumRows nicht akzeptiert.

Du kannst diesen Fehler umgehen, wenn du unter anderem $res3 vorher auf $res3 != NULL prüfst.

Den anderen Fehler, den du beschrieben hast, resultiert vermutlich daraus, weil MySQL einen SubSelect erwartet. Die Klammern sind daher falsch.

Wenn du Volltext als Parameter eingibst, musst du die in Anführungszeichen (’ oder " (Escaped)) schreiben.

also: …WHERE fid=’".$_GET[„fid“]."’ AND…

oder: …WHERE fid="".$_GET[„fid“]."" AND…

das verhindert auch viele Fehler, wenn der User falsche Daten eintippt (halt Strings anstelle von zahlen, etc.)

Außerdem würde ich NIEMALS einen $_GET[] Wert ohne mysql_escape_string in eine Abfrage werfen, auch nicht dann, wenn magic_quotes=on ist!