Problem mit Select count(*) as count

Einklappen
Dieses Thema ist geschlossen.
X
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Problem mit Select count(*) as count

    Hi Leute,

    ich hab als ersatz für den Befehl mysql_num_rows Select (*) as count gefunden. Nur leider funktioniert das be mir nicht vielleicht könnt ihr mir da helfen!

    Code:
    $heute=$dbh->prepare("SELECT count(*) as count FROM hits WHERE hit_name = 'heute';");
    $tag->execute();
    print_r($heute);

    Fehlermeldung:
    : 0PDOStatement Object ( [queryString] => SELECT count(*) as count FROM hits WHERE hit_name = 'heute'; )

    Was mache ich denn Falsch?!

  • #2
    du benutzt ein schlüsselwort von mysql, probier mal

    .. as anzahl ..

    EDIT:
    ups, count darf man doch.. hab mal selbst nachgelesen:

    For example, COUNT is acceptable as a column name.
    http://dev.mysql.com/doc/refman/4.1/...ved-words.html

    also feuer zurück..


    Zuletzt geändert von hall; 13.04.2007, 11:42.
    mfg

    Kommentar


    • #3
      und hast du sonst noch ein lösungsvorschlag?

      Kommentar


      • #4
        was nutzt du da für eine Klasse? mal den Query in phpMyAdmin abgesetzt, um zu gucken, ob der wenigstens richtig ist?
        Sunshine CMS
        BannerAdManagement
        Borlabs - because we make IT easier
        Formulargenerator [color=red]Neu![/color]
        Herkunftsstatistik [color=red]Neu![/color]

        Kommentar


        • #5
          Hast du mal versucht die Query via Mysql Konsole oder PHPMyAdmin Dings an die DB zu senden ?
          Etwas noch: Mach den Strichpunkt am Ende des Strings weg und probier nochmal.

          Gruss

          tobi
          Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

          [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
          Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

          Kommentar


          • #6
            ja, debuggen, z.b. mal query unter phpmyadmin testen und fehlermeldung auswerten. folgendes ist ganz hilfreich: http://php-resource.de/forum/showthr...threadid=50454

            vielleicht bietet deine datenbank-klasse eine möglichkeit, die mysql fehlermeldungen abzufangen.
            mfg

            Kommentar


            • #7
              Also in phpmyadmin funzt das! nur halt nicht in der PHP Datei. Und error_reporting uns sowas habe ich alles schon drin! Nur ne Klasse extra dafür schreiben will ich nciht weil ich mich damit auch noch nicht so gut auskenne!
              Hmm..... ich poste einfach mal denn kompletten PHP Script, vielleicht könnt ihr mir dann weiterhelfen!

              Code:
              error_reporting(E_ALL);
              echo mysql_errno() . ": " . mysql_error() . "\n";
              error_reporting(E_ALL);
              $user="XXX";
              $pass="XXX";
              $ip = $_SERVER['REMOTE_ADDR'];
              
              
              $sql="SELECT * FROM online WHERE DATE_FORMAT(online_dt, '%d') = DATE_FORMAT(NOW(), '%d') AND online_ip = '$ip';";
              //Verbinden mit dem MYSQL-Server und DB auswählen
              $dbh = new PDO("mysql:host=localhost;dbname=sp_blackperfect_1",$user,$pass);
              
              $dbh->query("UPDATE online set onl_exp = '1' WHERE DATE_ADD(online_dt,INTERVAL 3 MINUTE) < NOW();");
              $dbh->query("UPDATE hits set hit_anz = '0' WHERE DATE_FORMAT(hit_tag, '%d') <> DATE_FORMAT(NOW(), '%d') AND hit_name = 'heute';");                     
              
              
              
              
              $result=$dbh->prepare("SELECT * FROM online WHERE DATE_FORMAT(online_dt, '%d') = DATE_FORMAT(NOW(), '%d') AND online_ip = '$ip';");
              $result->execute();
              $count=$result->rowCount();
              echo $count;
              if($count > 0)
              {
              	foreach($dbh->query($sql) as $row)
              	{
              		//dient als mysql_fetch_array ersatz
              	}
              	if($row[onl_exp]==1)
              	{
              		
              		$dbh->query("UPDATE online set onl_exp = '0', onl_dt = NOW() WHERE DATE_FORMAT(online_dt, '%d') = DATE_FORMAT(NOW(), '%d') AND online_ip = '$ip';");
              	}
              }
              else 
              {
              		$dbh->query("INSERT INTO online (online_ip, online_dt, onl_exp) VALUES ('$ip',NOW(),'0');");
                     
              }
              
              		$dbh->query("UPDATE hits set hit_anz = hit_anz + 1, hit_tag = NOW() WHERE hit_name ='heute';");
              		$dbh->query("UPDATE hits set hit_anz = hit_anz + 1 WHERE hit_name ='total';");
              
              //Auslesen der Daten
              $tag=$dbh->prepare("SELECT count(*) as count FROM hits WHERE hit_name = 'heute';");
              $tag->execute();
              print_r($tag);

              Kommentar


              • #8
                Regeln lesen, Code umbrechen!
                I don't believe in rebirth. Actually, I never did in my whole lives.

                Kommentar


                • #9
                  ja ich weiß sry! aber könntet ihr mir trotzdem helfen, weil eigentlich spielen ja nur die letzten teilen eine rolle

                  Kommentar


                  • #10
                    Schon auf mögliche Exceptions getestet ?
                    PHP-Code:
                    try{
                      
                    $heute=$dbh->prepare("SELECT count(*) as count FROM hits WHERE hit_name = 'heute';");
                      
                    $tag->execute();
                      
                    print_r($heute);
                    }catch(
                    PDOException $e){
                      die(
                    $e->getMessage());

                    Gruss

                    tobi
                    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                    Kommentar


                    • #11
                      auch wenn ich es so mache kommt die selbe Fehlermeldung:
                      : 0PDOStatement Object ( [queryString] => SELECT count(*) as count FROM hits WHERE hit_name = 'heute'; )

                      ach mano .......

                      Kommentar


                      • #12
                        Hast du das abschliessende Semikolon im String schon mal testweise entfernt ? Kann mit aufeinanderfolgenden Queries Probleme geben...
                        Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                        [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                        Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                        Kommentar


                        • #13
                          So also die Fehlermeldung habe ich schon mal weg bekommen, aber korrekt auslesen tut er noch immer nicht.
                          Er gibt immer nur folgendes aus ":1"
                          Diesen Quellcode hab ich dafür verwendet:

                          PHP-Code:
                            $heute=$dbh->prepare("SELECT count(*) as count FROM hits WHERE hit_name = 'heute';",
                          array(
                          PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true));
                          $tag=$heute->execute();
                          echo(
                          $tag); 
                          Jetzt wäre schön wenn mir noch jemand sagen könnte wie ich die Spalte hin_anz(heute), korrekt auslesen kann?!

                          Kommentar


                          • #14
                            Manual gelesen ? Hast du $tag mal mittels var_dump() ausgegeben ? Kommt dann nicht ev ein boolean true heraus ?
                            Weil gemäss Manual
                            Returns TRUE on success or FALSE on failure.
                            Ansonsten mal die Userkommentare und Beispiele im Manual anschauen.

                            Gruss

                            tobi
                            Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                            [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                            Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                            Kommentar

                            Lädt...
                            X