mysqli bind_param error

TMM

Mitglied
Hallo liebe Community,

ich habe heute eine meiner mysqliSELECT-Abfragen umgestellt und erhalte nun einen bind_param Error. Leider finde ich den Fehler nicht, eventuell geht auch die Abfrage in mysqli nicht mit dieser Syntax (in MyphpAdmin läuft sie einwandfrei)

Hier die Abfrage:

PHP:
$db = new mysqli('localhost', 'user', 'userpw', 'userdb');
if(!mysqli_connect_errno() == 0) {
    echo 'Es konnte keine Verbindung zur Datenbank hergestellt werden.';
  }

// Abfrage
  $stmt = $db->prepare(
          ' SELECT 
                  `USER_KELLEREI.LeseNr` , `USER_KELLEREI.kg` , `USER_KELLEREI.Oechsle` , `USER_TRAUBENSORTEN.sorten_name`
            FROM 
                  USER_KELLEREI, USER_TRAUBENSORTEN
            WHERE
                  USER_KELLEREI.Sorte = USER_TRAUBENSORTEN.sorten_id
                  
            AND
                  USER_KELLEREI.usr_name = ?');
                  
  
  //  Parameter füllen
  $stmt->bind_param('s', $_SESSION['username']);
  
  // Statement abschicken
  $stmt->execute();
    
  // Ergebnisse an Variablen binden (pro Feld muss zwingend eine Variable vergeben sein!)
  $stmt->bind_result($LeseNr, $kg, $Oechsle, $Sorte);

Vielleicht kann mir ja einer sagen, woran es liegt. Bei einer ähnlichen Abfrage funktioniert das Befüllen des Parameters einwandfrei, allerdings greift er da auch nur auf eine Tabelle zu. Eventuell liegt es also an der Abfrage-Syntax.
Freue mich auf konstruktive Hilfe, Danke schonmal!
 
Hast du ein geneuaer Wortlaut der Fehlermeldung?
Hast du überprüft was in $_SESSION['username'] steht? (am besten mit var_dump())
 
$_SESSION['username'] ist gefüllt mit
string(5) "Testi"

(ist Anmeldename für den Test neuer Abfragen und damit korrekt)

kompletter Wortlaut der Fehlermeldung:
Fatal error: Call to a member function bind_param() on a non-object in /.../.../public_html/.../php/abfrage_kellerei.php on line 19

line 19 entspricht
$stmt->bind_param('s', $_SESSION['username']);

des obigen Codes...
 
Call to a member function bind_param() on a non-object in
Das bedeutet eigentlich, dass $stmt kein Objekt ist. Dann müsste $db->prepare fehlgeschlagen sein.
 
Kann ich das irgendwie überprüfen, wie gesagt in phpMyAdmin funktioniert die Abfrage und liefert auch das gewünschte Ergebnis (allerdings verwende ich da keine Variablen)
 
Habe den "Fehler" gefunden, bzw. habe ich mal in PHP die Anführungszeichen für die Feldnamen weggelassen, jetzt hat er es gefressen. Du hattest also Recht, $db->prepare war tatsächlich fehlgeschlagen (obwohl eigentlich vorher so in myAdmin geprüft).
Danke Dir für die Hilfe, hat mir geholfen die Abfrage doch noch einmal gegenzuchecken ;-)
 
Zurück