SELECT COUNT und mysqli

TMM

Mitglied
Hallo,
hab mal wieder ein Problem mit einer Abfrage und finde den Fehler einfach nicht, hier der Code:

PHP:
$stmt = $db->prepare(
            'SELECT 
                  COUNT (*) AS TOTAL 
            FROM 
                  USER_TANKLAGER
            WHERE
                  user_name = ?');
                  
    //  Parameter füllen
    $stmt->bind_param('s', $_SESSION['username']);
    
    // Abfrage ausführen
    $stmt->execute();

    // Ergebnis abrufen
    $stmt->bind_result($anz_eintraege);
    $stmt->fetch();
    
    // Ergebnis ausgeben
    echo $anz_eintraege;
    
    // Speicher freigeben
    $stmt->close();

Als Fehler wird ausgegeben:
Fatal error: Call to a member function bind_param() on a non-object in /home/.../public_html/.../php/kvg.php

$db (mysqli Datenbankverbindung) wird über include vor der Abfrage eingebunden.

Irgendwie wird $stmt nicht als Objekt instanziert, warum, das ist die Frage, bei anderen Abfragen geht es komischerweise ohne Probleme...
Weiß jemand Rat?
 
Der Fehler liegt darin, das $stmt kein Objekt ist. Möglicherweise prüfst du vorher die Instanz und gibst ggf. eine Exception weiter:

PHP:
    $stmt = $db->prepare(
            'SELECT 
                  COUNT (*) AS TOTAL 
            FROM 
                  USER_TANKLAGER
            WHERE
                  user_name = ?');

    if( !$stmt instanceof MySQLI_Stmt || $db->errno > 0 )
        throw new Exception( $db->error, $db->errno );

Edit: Sorry, zuviel Java in der letzten Zeit ;-) Die Prüfung müsste richtigerweise so lauten:

PHP:
if( !is_a($stmt, 'MySQLI_Stmt') || $db->errno > 0 )
 
Zuletzt bearbeitet:
Hallo Saftmeister,

jetzt gibt er mir folgenden Fehler aus:

Fatal error: Uncaught exception 'Exception' with message 'You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '*) AS TOTAL FROM USER_TANKLAGER WHER' at line 2' in /home/.../public_html/.../php/kvg.php:104 Stack trace: #0 {main} thrown in /home/.../public_html/.../php/kvg.php on line 104

Das hilft mir nun leider auch nicht weiter :-(

EDIT: Fehlermeldung bleibt die gleiche trotz Deines Edits....


Kann es vielleicht an dem COUNT liegen und gäbe es Alternativen, z.B. num_rows...?
 
Zuletzt bearbeitet:
Naja, jetzt hast du wenigstens den Grund, warum es nicht geht ;-)

Dein SQL ist falsch. Es müsste IMHO so lauten:

Code:
SELECT 
                  COUNT(*) AS TOTAL 
            FROM 
                  USER_TANKLAGER
            WHERE
                  user_name = ?

Das Leerzeichen nach dem COUNT-Schlüsselwort dürfte das Problem sein.
 
Es funktioniert, ich danke Dir :D
Das komische ist immer, dass die Abfragen im MyAdmin perfekt laufen und sobald man die Abfrage mit PHP zur Datenbank schickt es einem die Fehlermeldungen um die Ohren haut :rolleyes:

Wünsche noch einen schönen Sonntag.
Möge der Saft mit Dir sein ;)
 
Bei mir komischerweise nicht, Sonntags sollte man einfach nicht an seinen Abfragen rumdoktern :D

Gut dass es tutorials.de gibt, da werden Sie geholfen...
 

Neue Beiträge

Zurück