Jan: mysql_num_rows

Guten Morgen,

ich liege doch richtig, wenn ich behaupte, ich lese mit mysql_num_rows aus wievie Reihen sich in der Tabelle befinden, oder?

Nun möchte ich es gerne folgendermassen machen:

$newid = mysql_fetch_array(mysql_query("SELECT * FROM user WHERE sessid='$_COOKIE[pdsessid]'"));

$newpn = mysql_num_rows(mysql_query("SELECT empaengerid FROM messages WHERE empfaengerid='$newid[0]'"));

Grüße Jan

  1. Guten Morgen,

    ich liege doch richtig, wenn ich behaupte, ich lese mit mysql_num_rows aus wievie Reihen sich in der Tabelle befinden, oder?

    Nun möchte ich es gerne folgendermassen machen:

    $newid = mysql_fetch_array(mysql_query("SELECT * FROM user WHERE sessid='$_COOKIE[pdsessid]'"));

    $newpn = mysql_num_rows(mysql_query("SELECT empaengerid FROM messages WHERE empfaengerid='$newid[0]'"));

    Ich vergesse leider immer die Hälfte... :-(

    wenn ich die Variable nun mit echo $newpn[0]; ausgeben lassen möchte bekomme ich eine mysql Meldung

    Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /srv/www/htdocs/web429/html/includes/header.inc on line 47

    Wo liegt mein Fehler?

    Grüße Jan

    1. Guten Morgen Jan,

      ich liege doch richtig, wenn ich behaupte, ich lese mit mysql_num_rows aus wievie Reihen sich in der Tabelle befinden, oder?

      Nein

      Wo liegt mein Fehler?

      Das Du dort nicht nachgelesen hast
      http://de.php.net/manual/de/function.mysql-num-rows.php

      Viele Grüße

      lulu

      --
      bythewaythewebsuxgoofflineandenjoytheday
      1. Guten Morgen lulu,

        Nein

        gut zu wissen der eine sagt ja der andere nein...

        Das Du dort nicht nachgelesen hast
        http://de.php.net/manual/de/function.mysql-num-rows.php

        Macht mich nicht schlauer... es funktionier ja, wenn ich mir alle Datensätze augeben lasse, aber es geht nicht, wenn ich nur die Datensätze haben möchte die mit der empfaengerid='2' gekennzeichnet sind...

        Gruß   JAn

    2. ich liege doch richtig, wenn ich behaupte, ich lese mit mysql_num_rows aus wievie Reihen sich in der Tabelle befinden, oder?

      Ja mysql_num_rows gibt an, wie viele Zeilen der Query Befehl ergeben hat.

      Ich sehe in deinem Script gerade keinen Fehler. Aber nimm doch das ganze etwas auseinander.
      Zum Beispiel:

        
      $query = mysql_query("SELECT * FROM user WHERE sessid='$_COOKIE[pdsessid]'");  
      $newid = mysql_fetch_row($query);  
      $query2 = mysql_query("SELECT empaengerid FROM messages WHERE empfaengerid='$newid[0]'")  
      $newpn = mysql_num_rows($query2);  
      
      

      Überprüf doch mal was du im Array $newid bekommst. Vieleicht bekommst du dort etwas ganz falsches.

      P.S. gib beim ersten query an welches Feld du möchtest und nicht *

  2. Hi,

    ich liege doch richtig, wenn ich behaupte, ich lese mit mysql_num_rows aus wievie Reihen sich in der Tabelle befinden, oder?

    Nein, liegst Du nicht.

    mysql_num_rows gibt die Anzahl der mit dem letzten SELECT-Statement gefundenen Zeilen zurück.

    Nun möchte ich es gerne folgendermassen machen:
    $newid = mysql_fetch_array(mysql_query("SELECT * FROM user WHERE sessid='$_COOKIE[pdsessid]'"));
    $newpn = mysql_num_rows(mysql_query("SELECT empaengerid FROM messages WHERE empfaengerid='$newid[0]'"));

    Und was hält Dich davon ab?

    Optimal ist die Konstruktion nicht - Du fängst keinerlei Fehler ab, und ob das mit den Array-Zugriffen im String funktioniert ohne {}, wage ich zu bezweifeln. Und SELECT * sollte man nur für Testzwecke benutzen.

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    Schreinerei Waechter
    Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
  3. Ahoi Jan,

    Nun möchte ich es gerne folgendermassen machen:

    was willst du genau machen? wo ist der fehler?

    $newid = mysql_fetch_array(mysql_query("SELECT * FROM user WHERE sessid='$_COOKIE[pdsessid]'"));
    $newpn = mysql_num_rows(mysql_query("SELECT empaengerid FROM messages WHERE empfaengerid='$newid[0]'"));

    wie wäre es wenn du den code etwas übersichtlicher machst:

      
    $sql = "SELECT * FROM user WHERE sessid='$_COOKIE[pdsessid]'";  
    $erg = mysql_query($sql);  
    $data = mysql_fetch_array($erg);  
    $newid = $data[0];  
      
    $sql = "SELECT empaengerid FROM messages WHERE empfaengerid='$newid[0]'";  
    $erg = mysql_query($sql);  
    $newpn = mysql_num_rows($erg);  
    
    

    dies erleichtert die fehlersuche. wenn z.B. was kommt wie fehler in
    zeile 34. Wie schon von anderen erwähnt wurde SELECT * nur für tests.
    und wenn du mit fetch_array arbeitest kannst du auch den spaltennamen
    angeben.

    MfG