Thomas: Problem mit SELECT COUNT(*) FROM ...

Hallo,

ich möchte testen ob ein bestimmter Eintrag in einer MySQL DB schon existiert.

$query = "SELECT COUNT(*) FROM meineTabelle WHERE meinFeld='$meinWert'";
$result = $db->query($query);
$foo= mysql_fetch_array($result);
echo "$foo";

gibt nichts aus. Was mache ich falsch?

Gruß
Thomas

  1. Hello,

    gibt nichts aus. Was mache ich falsch?

    weiß nicht. Vermutlich ignorierst du einen Fehler, wo ist die Fehlerbehandlung...?

    MfG
    Rouven

    --
    -------------------
    sh:| fo:} ch:? rl:( br:& n4:{ ie:| mo:} va:) js:| de:] zu:| fl:( ss:) ls:& (SelfCode)
    Computer programming is tremendous fun. Like music, it is a skill that derives from an unknown blend of innate talent and constant practice. Like drawing, it can be shaped to a variety of ends: commercial, artistic, and pure entertainment. Programmers have a well-deserved reputation for working long hours but are rarely credited with being driven by creative fevers. Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination, but because their imagination reveals worlds that others cannot see. -- Larry OBrien and Bruce Eckel in Thinking in C#
  2. Hi!

      
    
    > $query = "SELECT COUNT(*) FROM meineTabelle WHERE meinFeld='$meinWert'";  
    > $result = $db->query($query);  
    > $foo= mysql_fetch_array($result);  
    > echo "$foo";  
    
    

    gibt nichts aus. Was mache ich falsch?

    Versuche mal ein

      
    var_dump($foo)  
    
    

    dann siehst Du, dass die Funktion  mysql_fetch_array aus gutem Grund _so_ heißt, denn sie gibt ein Array zurück.

    off:PP

    --
    "You know that place between sleep and awake, the place where you can still remember dreaming?" (Tinkerbell)
    1. var_dump($foo)

      Das gibt bool(false) aus.
      
      1. Hi!

        » ~~~php

        » var_dump($foo)
        »

        
        > Das gibt bool(false) aus.  
          
        Wie sieht denn die Query aus? Test mal:  
        ~~~php
          
        echo $query;  
        
        

        Was sagt mysql_error?

        off:PP

        --
        "You know that place between sleep and awake, the place where you can still remember dreaming?" (Tinkerbell)
        1. Hi,

          »» » ~~~php

          »» » var_dump($foo)
          »» »

          
          > »» Das gibt bool(false) aus.  
          >   
          > Wie sieht denn die Query aus? Test mal:  
          > ~~~php
            
          
          > echo $query;  
          > 
          
          

          Die query ist o.k., wenn ich sie mit c&p in phpmyadmin eingeben funktioniert sie.

          Was sagt mysql_error?

          echo mysql_errno() . ": " . mysql_error(). "\n";
          gibt nur ":" aus.

          1. Hi!

            » »» » ~~~php

            » »» » var_dump($foo)
            » »» »

            
            > » »» Das gibt bool(false) aus.  
            > »  
            > » Wie sieht denn die Query aus? Test mal:  
            > » ~~~php
              
            
            > » echo $query;  
            > » 
            
            

            Die query ist o.k., wenn ich sie mit c&p in phpmyadmin eingeben funktioniert sie.

            Na gut;)

            » Was sagt mysql_error?
            echo mysql_errno() . ": " . mysql_error(). "\n";
            gibt nur ":" aus.

            Mhm, starten wir mal weiter oben: was ist mit

              
              var_dump($db)  
            
            

            ?

            off:PP

            --
            "You know that place between sleep and awake, the place where you can still remember dreaming?" (Tinkerbell)
            1. Hi!

              Nachtrag: wo und wie instanziierst Du $db?

              off:PP

              --
              "You know that place between sleep and awake, the place where you can still remember dreaming?" (Tinkerbell)
              1. Hi!

                Nachtrag: wo und wie instanziierst Du $db?

                $db = @new mysqli('localhost', 'benutze', 'passwort', 'datenbank');
                if (mysqli_connect_errno()) {
                    die ('Konnte keine Verbindung zur Datenbank aufbauen: '.mysqli_connect_error().'('.mysqli_connect_errno().')');
                }

                Wenn ich mal ein fasches pw oder name angebe bekomme ich auch die Fehlemeldung

            2. Hi,

              Mhm, starten wir mal weiter oben: was ist mit

              var_dump($db)

              
              > ?  
              
              object(mysqli)#1 (0) { } 
              
              1. Hi!

                » Mhm, starten wir mal weiter oben: was ist mit
                »
                » ~~~php

                »   var_dump($db)
                »

                
                > » ?  
                > object(mysqli)#1 (0) { }  
                  
                Ok Du verwendest also die MySQL Improved Extension, dann solltest Du zum Abholen der Daten auch nicht mysql\_fetch\_array verwenden - ich weiß nicht, ob man die 'normalen' mySql-Funktionen und die improved Funktionen mischen kann - ich denke nicht.  
                Dein $result enthält also ein Result-Objekt - überprüfe es ruhig mal mit var\_dump - das wirst Du noch öfter brauchen;)  
                Du solltest dann zum 'abholen' eine der mysqli-result-fetch-methoden benutzen, z.B: [mysqli_result::fetch_array](http://de.php.net/manual/de/mysqli-result.fetch-array.php).  
                  
                Wenn Du dann die gewünschten Ergebnisse erzielst, solltest Du dich bald um eine vernünftige Fehlerbehandlung kümmern.  
                  
                  
                off:PP  
                  
                  
                
                -- 
                "You know that place between sleep and awake, the place where you can still remember dreaming?" (Tinkerbell)  
                
                
  3. gibt nichts aus. Was mache ich falsch?

    Versuchs mal mit echo $foo['COUNT(*)'];

    $foo selbst wird höchstens ein Array beinhalten. Alternativ solltest du ggf. vielleicht mit COUNT(*) as summe arbeiten und dann $foo['summe']; ausgeben - aus Verständlichkeitsgründen.

    1. »» gibt nichts aus. Was mache ich falsch?

      Versuchs mal mit echo $foo['COUNT(*)'];

      $foo selbst wird höchstens ein Array beinhalten. Alternativ solltest du ggf. vielleicht mit COUNT(*) as summe arbeiten und dann $foo['summe']; ausgeben - aus Verständlichkeitsgründen.

      Dann geht gar nichts mehr. Das Programm bleibt an dieser Stelle stecken.

  4. Hallo

    ändere mal,

    $query = "SELECT COUNT(*) FROM meineTabelle WHERE meinFeld='$meinWert'";

    in
    $query = "SELECT COUNT(*) AS Anzahl FROM meineTabelle WHERE meinFeld='$meinWert'";

    und

    echo "$foo";

    in
    echo $foo['Anzahl'];

    viele Grüße
    hawk

    1. Hallo [...]

      Das kommt mir doch recht bekannt vor :D

      1. Hallo suit,

        tja du hast recht.
        Man sollte wohl doch vorher alle Antworten lesen, bevor man was schreibt :-)

        sorry

        viele Grüße
        hawk

  5. Hello,

    ich möchte testen ob ein bestimmter Eintrag in einer MySQL DB schon existiert.

    $query = "SELECT COUNT(*) FROM meineTabelle WHERE meinFeld='$meinWert'";
    $result = $db->query($query);
    $foo= mysql_fetch_array($result);
    echo "$foo";

    gibt nichts aus. Was mache ich falsch?

    Ohne Kenntnisse über die verwendete Datenbankklasse kann man eigentlich gar nichts dazu sagen.
    Ich weiß jedenfalls bisher nicht, welches Ergebnis die Methode query() liefern soll.

    Das könnte ein Multiarray sein, das könnte ein Objekt sein, oder alles andere.

    Liebe Grüße aus dem schönen Oberharz

    Tom vom Berg

    --
    Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de