Murida: count gibt 1 zurück

Hallo

Ich habe diesen Code:

  
$res1 = mysql_query("SELECT * FROM termine WHERE id='".htmlspecialchars($_GET['id'])."'");  
  
$datensatz = mysql_fetch_assoc($res1);  
print_r($datensatz);  
echo $datensatz;  
echo count($datensatz);  

Wenn ich hier eine id mit 17 übergebe (die es in der Tabelle nicht gibt), bekomme ich nur die Zahl 1 zurückgeliefert.
Warum print_r und der echo $datensatz mir nichts zurückliefern, ist mir klar.
Aber warum um alles in der Welt sagt count, dass es 1 Element im eigentlich leeren Array gäbe?

Im Manual sehe ich nicht, dass count auch bei leerem Array eine 1 zurückgeben kann.

Danke
murida

  1. Hi,

    $res1 = mysql_query("SELECT * FROM termine WHERE id='".htmlspecialchars($_GET['id'])."'");
    $datensatz = mysql_fetch_assoc($res1);
    echo count($datensatz);

    
    >   
    > Wenn ich hier eine id mit 17 übergebe (die es in der Tabelle nicht gibt), bekomme ich nur die Zahl 1 zurückgeliefert.  
    > Aber warum um alles in der Welt sagt count, dass es 1 Element im eigentlich leeren Array gäbe?  
      
    If var is not an array, 1 will be returned (exception: count(NULL) equals 0).  
      
    Wenn keine Datensätze vorhanden sind, ist $datensatz kein array.  
      
    cu,  
    Andreas
    
    -- 
    [Warum nennt sich Andreas hier MudGuard?](http://MudGuard.de/)  
    [Schreinerei Waechter](http://www.schreinerei-waechter.de/)  
    [O o ostern ...](http://ostereier.andreas-waechter.de/)  
    Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.  
    
    
  2. Hallo Murida,

    das hat zwar nichts mit Deiner Frage zu tun, aber woher hast Du Dein Konstrukt?

    $res1 = mysql_query("SELECT * FROM termine WHERE id='".htmlspecialchars($_GET['id'])."'");

    was soll das bewirken? Statt htmlspecialchars() solltest Du eher mysql_real_escape_string() verwenden, ggf. vorher in Abhängigkeit der unsäglichen Magic Quotes noch stripslashes() wie im Handbuchabschnitt zu mysql_real_escape_string() beschrieben.

    Statt des folgenden Codes

    $datensatz = mysql_fetch_assoc($res1);

    // ah ja, und wenn kein Datensatz vorhanden ist? Was dann?

    print_r($datensatz);
    echo $datensatz;
    echo count($datensatz);

    möchtest Du liebermysql_num_rows() verwenden und ersparst Dir Deine Raterei.

    Im Manual sehe ich nicht, dass count auch bei leerem Array eine 1 zurückgeben kann.

    siehe Andreas Posting

    Freundliche Grüße

    Vinzenz