Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource

Lobedan

Mitglied
Hey Leute,

tut mir leid wenn ich euch wieder nerven muss aber ich bekomms einfach nicht alleine hin :rolleyes:

Ich bin dabei mir ein Forum zu basteln und wenn ich neue Themen erstelle bekomm ich die Fehlermeldung:

Code:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\Dokumente und Einstellungen\Entwicklung\Desktop\xhodon\xampp\htdocs\forum-thema-neu-check.php on line 105

Ich kann da nur kein Fehler finden :confused:

PHP:
$insert_post_data_thread = "INSERT INTO thread (id,katid,forumid,name,username,views,datum,zeit)
VALUES
('',
'".$_GET['kat']."',
'".$_GET['board']."',
'".$title."',
'".$user."',
'0',
CURDATE(),
CURTIME()
)";

mysql_query($insert_post_data_thread) OR die('SQl: \$insert_post_data_thread: '.mysql_error());

$id = mysql_insert_id();

$insert_post_data_post = "INSERT INTO post (id,katid,forumid,threadid,name,username,datum,zeit,ip,nachricht)
VALUES
('',
'".$_GET['kat']."',
'".$_GET['board']."',
'".$id."',
'".$title."',
'".$user."',
CURDATE(),
CURTIME(),
'".$_SERVER['REMOTE_ADDR']."',
'".$ins."'
)";

$query_post_data_post = mysql_query($insert_post_data_post) OR die('SQl: \$insert_post_data_post: '.mysql_error());


if (mysql_num_rows($query_post_data_post) < 0) {

$inhalt.= '<p>Dein Eintrag wurde gespeichtert! Du wirst sofort weitergeleitet.</p>'.mysql_num_rows($query_post_data_post);
//<meta http-equiv="refresh" content="5; URL=/forum-thema-zeigen.php?kat='.$_GET['kat'].'&board='.$_GET['kat'].'&thread='.$id.'">
} else {

$inhalt.= '<p>Fehler!</p>'.mysql_num_rows($query_post_data_post);
}


Kann mir da jemand helfen?

gruß
 
Bei einem Insert kannst du doch nicht mysql_num_rows() abfragen. Das funktioniert nicht, da es ja keine SELECT-Abfrage ist.
Um zu prüfen, ob der Eintrag erfolgreich war, kannst du einfach abfragen, ob der Query nicht false enthält:
PHP:
$query_post_data_post = mysql_query($insert_post_data_post) OR die('SQl: \$insert_post_data_post: '.mysql_error());


if ($query_post_data_post)  {

€dit:
Und das hier:
PHP:
$inhalt.= '<p>Fehler!</p>'.mysql_num_rows($query_post_data_post);
ergibt keinen Sinn, da das Skript vorher durch das "DIE" eh abgebrochen wird.

€dit2:
Ich zitiere das php-manual:
mysql_num_rows() liefert die Anzahl der Datensätze einer Ergebnismenge. Diese Funktion ist nur gültig für SELECT Befehle. Haben Sie eine INSERT, UPDATE oder DELETE Abfrage ausgeführt und möchten die Anzahl der betroffenen Datensätze ermitteln, verwenden Sie die Funktion mysql_affected_rows().
 
Zuletzt bearbeitet:
Cool danke

Das mit mysql_affected_rows müsste dann so sein das es größer null sein muss oder? Da ja mehr als 0 Datensätze davon betroffen sind
 
Das mit mysql_affected_rows müsste dann so sein das es größer null sein muss oder? Da ja mehr als 0 Datensätze davon betroffen sind

Willst du darauf wirklich noch eine Antwort haben? Probier es doch einfach aus, dann wirst du es schon sehen!

Natürlich muss die Zahl bei einem erfolgreichen Insert > 0 sein ;)
 
Doch. Image.

Handbuch:
http://de.php.net/manual/de/function.mysql-affected-rows.php hat gesagt.:
mysql_affected_rows() liefert die Anzahl betroffener Datensätze

Deine Aussage:
müsste [...] größer null sein [...] oder? Da [...] mehr als 0 Datensätze davon betroffen sind

Demnach ist deine Aussage richtig, wenn mehr als 0 Datensätze betroffen sind.
 
Zuletzt bearbeitet:
okay jetzt hab ichs verstanden :)

Da wir schon bei dem Thema überprüfen sind.
Kann ich mysql_affected_rows auch bei DELETE benutzen
Oder kurz gesagt funktioniert des so

PHP:
$delete_news = "DELETE FROM news WHERE id='".$id."'";


$query_news = mysql_query($delete_news) OR die(mysql_error());

if ($query_news) {
$inhalt.='Der Eintrag wurde erfolgreich gelöscht!';
} else {
$inhalt.="Der Eintrag konnte NICHT gelöscht werden!";
}


lg
 
Entschuldige aber bitte lies dir hier alles durch, da nichts umsonst gesagt wird. http://us2.php.net/manual/de/function.mysql-affected-rows.php

Schon zwei mal hier aufgetaucht der Link und nun zum dritten mal. Dort steht alles was du uns nun fragst.

Dein Code wird so nicht ganz Funktionieren, da mysql_query eine Resource wieder gibt oder FALSE bei semantischen Fehlern.
Aber genau dieses FALSE fängst du mit einem "or" ab.

Dies steht aber auch in Handbuch: http://us2.php.net/manual/de/function.mysql-query.php

Dort steht alles was du brauchst ;)
 
Zuletzt bearbeitet:
Und im Übrigen geht bei solchen Fragen doch ausprobieren viel schneller, als einen Post zu verfassen und auf Antwort zu warten. :confused:

Nur mal so nebenbei...

LG
 
Zurück