Der Martin: Fatal error: Call to a member function execute()

Beitrag lesen

Hi,

ich wollte in meine Funktion ein LIMIT mit einbauen:

gut und schön, nur richtig sollte es sein. ;-)

	function hersteller($mysqli) {
		define ('LIMIT', 4);
   [...]
		$stmt = $mysqli->prepare("SELECT h_id, h_titel, h_titelURL, h_status 
					  FROM web_hersteller  
					  LIMIT '. LIMIT . ' OFFSET ' . $offset");
		$stmt->execute();

Ich hab mal alles weggelassen, was mit dem Fehler nichts zu tun hat.

Jetzt erhalte ich diese Meldung: Fatal error: Call to a member function execute() on a non-object

Im Manual heißt es: "mysqli_prepare() returns a statement object or FALSE if an error occurred."

Letzteres ist hier wohl passiert - prepare() hat wegen des Syntaxfehlers ein lapidares FALSE zurückgegeben, und FALSE hat keine execute-Methode. Immer wieder die ungenügende Kontrolle auf aufgetretene Fehler ...
Schau dir das SQL-Statement mal genau an. Als erstes fällt auf, dass du den Wert für die LIMIT-Klausel in Anführungszeichen setzen willst. Wozu? Es ist ein simpler Zahlenwert. Und dasselbe gilt für OFFSET, nur dass du hier auch noch das schließende Anführungszeichen vergessen hast. Nein, genaugenommen ist das öffnende schon überflüssig und unsinnig.

PS: Ich bin derzeit mit dem neuen Microsoft Edge online. Kann mich leider nicht einloggen.

Das muss ich jetzt vermutlich nicht verstehen.

So long,
 Martin