mysql_num_rows

Kamephis

Mitglied
mysql_num_rows unklarer fehler

hi leute, bin leider mit der suchfunktion nicht fündig geworden...

Ich habe folgendes Problem:
ich bekomme diesen fehler, wenn ich in der mysqlabfrage mit == arbeite; aber mit = macht der anscheinend ziemlichen mist... ich habe 0 ahnung woran das liegt und mittlerweile schon paar stunden an dem script rumprobiert, aber immer noch keine lösung gefunden.
Hoffe hier kann mir wer helfen.

Fehler:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in ... on line ...
die line ... ist:
PHP:
$points = mysql_num_rows($pts1)*3 + mysql_num_rows($pts2)*3 + mysql_num_rows($pts3);
Der Code auf den sich diese Abfrage bezieht:
PHP:
$pts1 = mysql_query("SELECT * FROM adcup_group WHERE clan1='$clan' AND rclan1 > rclan2");
$pts2 = mysql_query("SELECT * FROM adcup_group WHERE clan2='$clan' AND rclan1 < rclan2");
$pts3 = mysql_query("SELECT * FROM adcup_group WHERE clan1='$clan' OR clan2='$clan' AND rclan1 = rclan2");

So lange, wie keine Ergebnisse in der Tabelle eingetragen sind, sind die betreffenden Zellen auf 'NULL' gestellt, also sollte das script eigentlich für $points den wert 0 liefern; das macht es aber nicht, sondern (für mich zufällig) einen wert von 1-7, der dann in die Datenbank eingetragen wird.

Das script soll so funktionieren:
Dort wo Ergebnisse eingetragen sind wird halt überprüft, welcher Clan gewonnen hat bzw ob unentschieden...
Hat dazu jemand eine idee bzw kann mir sagen, was ich falsch gemacht habe?
Dank im Voraus!
 
Zuletzt bearbeitet:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in
Ich kann's bald nicht mehr hören. Das Thema ist im PHP-Forum unter den Top Ten der am meisten gestellten Fragen.

Eine Deiner drei SQL-Abfragen ist syntaktisch nicht korrekt. Verwende bitte [phpf]mysql_error[/phpf], um den Fehler genauer zu spezifizieren.

snuu
 
sorry, habs anscheinend nicht genau genug formuliert:
meine idee war, dass ich statt = == verwenden müsste; DANN kommt der fehler;
---> kann also nicht des rätsels lösung sein;

das script gibt mir keinen fehler aus; (habe grade nochma mit error probiert wird 0; ausgegeben)

meine hauptfrage ist somit: warum kommt bei dem numrow irgend eine zahl raus, anstelle der zu erwartenden "0 zeilen", weil halt noch keine der betroffenen zellen etwas anderes als 'NULL' enthält.

Das in meiner syntax irgendwas nicht stimmt, wenn ich diesen fehler erhalte, weiß ich mittlerweile auch :)

hoffe zu dieser sache hat wer ne lösung...
 
Auch wenn der Wert einer Zelle NULL ist, so ist es dennoch ein Datensatz. Lass Dir mal die drei SQL-Anweisungen ausgeben und verwende sie in phpMyAdmin. Dann siehst Du auch, was die SQL-Statements zurück geben.

snuu
 
danke, das hat mich schonmal weitergebracht;
die statements sind korrekt;
allerdings werden bei ptk3 zeilen gefunden; eigentlich logisch, weil ja NULL = NULL ist :/
mal sehen wie ich das wegbekomm, muss jetzt erstmal weg, danke soweit;

mit AND rclan1!='' bzw AND rclan1!='NULL' klappt es aber nicht...
 
ok, thx nochma, mit phpmyadmin gings einfacher ^^

wens interessiert: lag wohl an dem OR in $ptk3; so klappt es:

PHP:
$pts1 = mysql_query("SELECT * FROM adcup_group WHERE clan1='$clan' AND rclan1 > rclan2");
$pts2 = mysql_query("SELECT * FROM adcup_group WHERE clan2='$clan' AND rclan1 < rclan2");
$pts3 = mysql_query("SELECT * FROM adcup_group WHERE clan1='$clan' AND rclan1 = rclan2");
$pts4 = mysql_query("SELECT * FROM adcup_group WHERE clan2='$clan' AND rclan1 = rclan2");

$points = mysql_num_rows($pts1)*3 + mysql_num_rows($pts2)*3 + mysql_num_rows($pts3) + mysql_num_rows($pts4);
 
Unbedingt ändern!
&nbsp;&rsaquo;&rsaquo;&nbsp;FAQ der Newsgroups de.comp.lang.php.* – 16.14. Warum soll ich nicht SELECT * schreiben?
PHP:
<?php
  [...]
  $query = "
	SELECT
	        COUNT(*)*3 AS `punkte`
	  FROM
	        `adcup_group`
	  WHERE
	        ( `clan1` = '".$clan."' AND `rclan1` > `rclan2` )
	     OR ( `clan2` = '".$clan."' AND `rclan1` < `rclan2` )";
  $row[] = mysql_fetch_array(mysql_query($query));

  $query = "
	SELECT
	        COUNT(*) AS `punkte`
	  FROM
	        `adcup_group`
	  WHERE
	        ( `clan1` = '".$clan."' OR `clan2` = '".$clan."' )
	    AND  `rclan1` = `rclan2`";
  $row[] = mysql_fetch_array(mysql_query($query));

  $points = $row[0]['punkte'] + $row[1]['punkte'];
  [...]
?>
 
Zurück