Fehler mit mysql_num_rows(): bei MySQL Abfrage

mich90

Mitglied
Hallo,
Also da dieses Problem überall im Script liegen könnte, aber nicht da wo der Server den Fehler in meinem PHP Script anzeigt, sende ich aunahmesweise den ganzen...

Code:
<?php
include ("checkuser.php");
?><?php
include ("grund.php");
?><?php
$name = $_SESSION['user_nickname'];
$name = $_SESSION['admin_nickname'];
mysql_connect("localhost", "X", "X");
mysql_select_db("X");
$res = mysql_query("
      SELECT

        `v`.*,



        COUNT(`s`.`spiel_id`) AS `gespielt`,



        SUM(

          IF(

            (`v`.`verein_id` = `s`.`heim_id` AND `s`.`heimtipp_'.$name.'` > `s`.`gasttipp_'.$name.'`) OR

            (`v`.`verein_id` = `s`.`gast_id` AND `s`.`gasttipp_'.$name.'` > `s`.`heimtipp_'.$name.'`),

            1, 0

          )

        ) AS `siege`,



        SUM(

          IF(`s`.`heimtipp_'.$name.'` = `s`.`gasttipp_'.$name.'`, 1, 0)

        ) AS `unentschieden`,



        SUM(

          IF(

            (`v`.`verein_id` = `s`.`heim_id` AND `s`.`heimtipp_'.$name.'` < `s`.`gasttipp_'.$name.'`) OR

            (`v`.`verein_id` = `s`.`gast_id` AND `s`.`gasttipp_'.$name.'` < `s`.`heimtipp_'.$name.'`),

            1, 0

          )

        ) AS `niederlagen`,



        SUM(

          IF(`v`.`verein_id` = `s`.`heim_id`, `s`.`heimtipp_'.$name.'`, 0) +

          IF(`v`.`verein_id` = `s`.`gast_id`, `s`.`gasttipp_'.$name.'`, 0)

        ) AS `tore`,



        SUM(

          IF(`v`.`verein_id` = `s`.`heim_id`, `s`.`gasttipp_'.$name.'`, 0) +

          IF(`v`.`verein_id` = `s`.`gast_id`, `s`.`heimtipp_'.$name.'`, 0)

        ) AS `gegentore`,



        COALESCE(

          SUM(

            IF(`v`.`verein_id` = `s`.`heim_id`, `s`.`heimtipp_'.$name.'`, -`s`.`heimtipp_'.$name.'`) +

            IF(`v`.`verein_id` = `s`.`gast_id`, `s`.`gasttipp_'.$name.'`, -`s`.`gasttipp_'.$name.'`)

          ), 0

        ) AS `tordifferenz`,



        SUM(

          IF(

            (`v`.`verein_id` = `s`.`heim_id` AND `s`.`heimtipp_'.$name.'` > `s`.`gasttipp_'.$name.'`) OR

            (`v`.`verein_id` = `s`.`gast_id` AND `s`.`gasttipp_'.$name.'` > `s`.`heimtipp_'.$name.'`),

            3, 0

          ) +

          IF(`s`.`heimtipp_'.$name.'` = `s`.`gasttipp_'.$name.'`, 1, 0)

        ) AS `punkte`



      FROM

        `vereine` `v`



      LEFT JOIN

        `spiele` `s` ON (`v`.`verein_id` IN (`s`.`heim_id`, `s`.`gast_id`))



      GROUP BY

        `verein_id`



      ORDER BY

        `punkte` DESC,

        `tordifferenz` DESC,

        `tore` DESC ");
        mysql_error();
if(mysql_num_rows($res)>0)
{
$platzierung = 1;
echo "<table>";
echo "<tr><td>Platz</td><td>Verein</td><td>Punkte</td><td>Tordifferenz</td><td>Tore</td><td>Gegentore</td><td>Spiele</td><td>Siege</td><td>Unentschieden</td><td>Niederlagen</td></tr>";
	while($dsatz = mysql_fetch_assoc($res))
	{
             $ver_id =  $dsatz["verein_id"];
    $verein_tausch_id = mysql_query("SELECT name FROM `vereine` WHERE verein_id = '$ver_id'");
    $verein = mysql_fetch_array($verein_tausch_id);
		echo "<tr>";
                 echo "<td>";
                 echo $platzierung;
                 echo "</td><td>";
		echo $verein["name"];
                 echo "</td><td>";
                 echo $dsatz["punkte"];
                 echo "</td><td>";
                 echo $dsatz["tordifferenz"];
                 echo "</td><td>";
                 echo $dsatz["tore"];
                 echo "</td><td>";
                 $gegentore =  $dsatz["tore"] - $dsatz["tordifferenz"];
                 echo   $gegentore;
                 echo "</td><td>";
                 echo $dsatz["gespielt"];
                 echo "</td><td>";
                 echo $dsatz["siege"];
                 echo "</td><td>";
                 echo $dsatz["unentschieden"];
                 echo "</td><td>";
                 echo $dsatz["niederlagen"];
		echo "</td></tr>";
                 $platzierung++;
                 }

         echo "</table>";
}
?>
</td>
</tr>
</table>
</body>
</html>

Entschuldigung, aber ich weiß nicht ob unten in dem HTML Script nicht der Fehler liegt, deswegen hab cih das aml mitgesendet ;)

Also der Fehler ist folgender:
Code:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /usr/export/www/vhosts/funnetwork/hosting/mich90/tippen/user_eigene_tabelle.php on line 139
Aber ich wüsste nicht warum das einen Fehler ausgibt... Meine Vermutung ist das der Fehler in der MySQL Abfrage liegt.

Danke für jeden Versuch der Fehlerbehebung ;)

Gruß
 
Es kann entweder sein, dass $res leer ist, also keine mysql-Abfrage durchgeführt wurde, oder keine Reihen ausgewählt wurde. Wenn du dir sicher bist, dass welche ausgewählt werden müssten, kann ich dir auch nicht helfen, ansonsten versuch es einfach mal mit einem '@' vor mysql_num_rows($res). Dadurch wird die Fehlermeldung unterdrückt und mit dem Script vortgefahten, auch wenn keine Reihen ausgewählt wurden.

mfg Shevonar
 
Hm das mit dem '@' lass lieber ist ziemlich unschön Fehlermeldungen zu unterdrücken. Hört sich für mich eher danach an als würdest du probieren auf ein Feld zuzugreifen was in der Datenbank nicht existiert (eventuell falsch geschrieben?) was gelegentlich hilft bei zusammen gebauten SQL's ist sich den ganzen kram mal ausgeben zu lassen bevor es an die Datenbank geht und dann mittels phpMyAdmin oder so etwas den SQL direkt auf der Datenbank zu testen und zu korrigieren.
Viele Grüße Steffen
 
Es kommt als Error :

Unknown column 's.heimtipp_'..'' in 'field list'

Hier liegt das Problem begraben:
Code:
 SELECT

        `v`.*,



        COUNT(`s`.`spiel_id`) AS `gespielt`,



        SUM(

          IF(

            (`v`.`verein_id` = `s`.`heim_id` AND `s`.`heimtipp_'.$name.'` > `s`.`gasttipp_'.$name.'`) OR

            (`v`.`verein_id` = `s`.`gast_id` AND `s`.`gasttipp_'.$name.'` > `s`.`heimtipp_'.$name.'`),

            1, 0

          )

        ) AS `siege`,



        SUM(

          IF(`s`.`heimtipp_'.$name.'` = `s`.`gasttipp_'.$name.'`, 1, 0)

        ) AS `unentschieden`,



        SUM(

          IF(

            (`v`.`verein_id` = `s`.`heim_id` AND `s`.`heimtipp_'.$name.'` < `s`.`gasttipp_'.$name.'`) OR

            (`v`.`verein_id` = `s`.`gast_id` AND `s`.`gasttipp_'.$name.'` < `s`.`heimtipp_'.$name.'`),

            1, 0

          )

        ) AS `niederlagen`,



        SUM(

          IF(`v`.`verein_id` = `s`.`heim_id`, `s`.`heimtipp_'.$name.'`, 0) +

          IF(`v`.`verein_id` = `s`.`gast_id`, `s`.`gasttipp_'.$name.'`, 0)

        ) AS `tore`,



        SUM(

          IF(`v`.`verein_id` = `s`.`heim_id`, `s`.`gasttipp_'.$name.'`, 0) +

          IF(`v`.`verein_id` = `s`.`gast_id`, `s`.`heimtipp_'.$name.'`, 0)

        ) AS `gegentore`,



        COALESCE(

          SUM(

            IF(`v`.`verein_id` = `s`.`heim_id`, `s`.`heimtipp_'.$name.'`, -`s`.`heimtipp_'.$name.'`) +

            IF(`v`.`verein_id` = `s`.`gast_id`, `s`.`gasttipp_'.$name.'`, -`s`.`gasttipp_'.$name.'`)

          ), 0

        ) AS `tordifferenz`,



        SUM(

          IF(

            (`v`.`verein_id` = `s`.`heim_id` AND `s`.`heimtipp_'.$name.'` > `s`.`gasttipp_'.$name.'`) OR

            (`v`.`verein_id` = `s`.`gast_id` AND `s`.`gasttipp_'.$name.'` > `s`.`heimtipp_'.$name.'`),

            3, 0

          ) +

          IF(`s`.`heimtipp_'.$name.'` = `s`.`gasttipp_'.$name.'`, 1, 0)

        ) AS `punkte`

$name ist leer dadurch versucht er auf eine Spalte mit dem namen "s.heimtipp_" zuzugreifen die gibt es anscheind nicht...

Gruß Steffen
 
Zurück