richard: help! mysql_num_rows geht nicht (!!)

help! mysql_num_rows bzw. mysql_fetch_row geht nicht (not a valid MySQL result resource)

Hallo Leute!

Ich versteh diesen Server nicht mehr...

Ich möchte mit PHP aus der Datenbak das Feld 'email' von bestimmten Datensätzen holen und in der Form "wert1, wert2, wert3, wert4, ...etc" ausgeben.

Ich habe es auf drei Arten versucht:

::-------------------------------------------------

$mlist = mysql_query('SELECT DISTINCT email FROM users
     WHERE group = "admin" OR group = "staff"', $conn);
$anzahl = mysql_num_rows($mlist);
for ($i = 0; $i < $anzahl; $i++){
     $adrArray[$i] = mysql_result($mlist,$i);
}
$maillist = implode(", ", $adrArray);

--------------------------------------------------

$mlist = mysql_query('SELECT DISTINCT email FROM users
     WHERE group = "admin" OR group = "staff"', $conn);

$mlisting = mysql_fetch_row($mlist);
$i = 0;
while ($mlisting){
       $adrArray[$i] = mysql_result($mlist,$i);
       $i++;
       $mlisting = mysql_fetch_row($mlist);
}
$maillist = implode(", ", $adrArray);

--------------------------------------------------

$mlist = mysql_query('SELECT DISTINCT email FROM users
        WHERE group = "admin" OR group = "staff"', $conn);

while ($rs=mysql_fetch_row($mlist)) {
                 print $rs[0];
} // next result

::------------------------------------------------

die db sieht so aus:
CREATE TABLE users (
  id tinyint(11) unsigned NOT NULL auto_increment,
  name varchar(50) NOT NULL default '',
  pass varchar(50) NOT NULL default '',
  group varchar(50) NOT NULL default '0',
  email varchar(255) default NULL,
  PRIMARY KEY  (id)
)

ABER! Jedesmal erhalte ich eine FEHLERMELDUNG wie folgt:
"Warning: Supplied argument is not a valid MySQL result resource in /home/[...]/send.php
on line [die Zeile in der jeweils "mysql_num_rows" bzw. "mysql_fetch_row" steht!]

Woran könnte das liegen???? Weiß jemand wo ich das problem suchen konnte, oder wie ich genaueres über den Fehler herausfinde? Oder wie's anders geht...?

Danke!!!!!!
lg
richard

  1. Hallo Richard,

    nur so aus der Hüfte geschossen:

    $mlist = mysql_query('SELECT DISTINCT email FROM users
         WHERE group = "admin" OR group = "staff"', $conn);

    Ich halte es für fragwürdig, ob die Verwendung des Schlüsselwortes "group" als Spaltenbezeichner zulässig ist (spricht zumindest nicht für einen guten Stil)!

    HTH Robert

    1. Hallo Richard,

      nur so aus der Hüfte geschossen:

      $mlist = mysql_query('SELECT DISTINCT email FROM users
           WHERE group = "admin" OR group = "staff"', $conn);

      Ich halte es für fragwürdig, ob die Verwendung des Schlüsselwortes "group" als Spaltenbezeichner zulässig ist (spricht zumindest nicht für einen guten Stil)!

      Eine entsprechende Fehlermeldung von MySQL würde dann wahrscheinlich auch auftauchen, wenn man eine Fehlerprüfung eingebaut hätte:

      $mlist = mysql_query('SELECT DISTINCT email FROM users
              WHERE group = "admin" OR group = "staff"', $conn);
        if (! $mlist)
          {
           echo mysql_error($conn);
          }
         else
          {
           while ($rs=mysql_fetch_row($mlist))
            {
             print $rs[0];
            };
          };

      Merke: Rückgabewerte vor Benutzung immer prüfen.

      Gruß,
        soenk.e

    2. ein 100%iger Treffer, srob!!!!!!

      nur so aus der Hüfte geschossen:

      WOW. also um mich mit dir duellieren zu können müsste ich noch fleißig üben ;).

      WHERE group = "admin" OR group = "staff"', $conn);

      Ich halte es für fragwürdig, ob die Verwendung des Schlüsselwortes "group" als Spaltenbezeichner zulässig ist (spricht zumindest nicht für einen guten Stil)!

      Also alle achtung, aber darauf wär ich vielleicht übernächste Woche gekommen....
      Genau das war der Fehler! .. und ich zweifle schon an allen meinen grauen Zellen *g*

      Steht das etwa in der mysql Doku?? ist mir nie aufgefallen. Solltest du zufällig die Stelle kennen, wo man das nachlesen kann poste sie doch bitte noch!

      Und was den guten Stil betrifft... meiner hat gerade wieder verbessert :)

      DANKE! (PS: Ich werde mich bemühen nie banale Fragen hier zu stellen .. hab gerade den big-thread:"wie baut man einen Reset-button ein" gelesen)

      1. Hallo,

        Und was den guten Stil betrifft... meiner hat gerade wieder verbessert :)

        will ja nicht meckern, sondern nur einen Tipp geben: in ANSI-SQL sind AFAIK nur single-quotes (') zulässig, double-quotes (") werden von MySQL nur tolleriert.

        D.h. statt
        $res = mysql_query('SELECT x,y FROM a WHERE x="foo"', $conn);
        sollte man der Portabilität wegen
        $res = mysql_query("SELECT x,y FROM a WHERE x='foo'", $conn);
        schreiben

        Grüße,

        Christian

        1. will ja nicht meckern, sondern nur einen Tipp geben: in ANSI-SQL sind AFAIK nur single-quotes (') zulässig, double-quotes (") werden von MySQL nur tolleriert.

          danke für den tipp und den link!
          lg
          richard

      2. Hallo,

        Steht das etwa in der mysql Doku?? ist mir nie aufgefallen. Solltest du zufällig die Stelle kennen, wo man das nachlesen kann poste sie doch bitte noch!

        ich mische mich mal ein:
        http://www.mysql.com/doc/R/e/Reserved_words.html

        Gruss
        Thomas