Der Martin: Fatal error: Uncaught Error: Call to a member function bind_param() on boolean

Beitrag lesen

Hallo,

	if(isset($_POST["submit2"])):
	
		echo $_POST["Wert"];
		echo $_POST["into"];
		echo $_POST["ID2"];
		
		$Wert = $_POST["Wert"];
		$into = $_POST["into"];
		$ID2 = $_POST["ID2"];
	
		$absenden2 = $mysqli->prepare("UPDATE playmobil SET ? = '?' WHERE ID=?");
		$absenden2->bind_param("ssi", $Wert, $into, $ID2);               <!-- Zeile 150-->
		$absenden2->execute();
		$absenden2->close();
endif;		

Warum erhalte ich diese Fehlermeldung

Fatal error: Uncaught Error: Call to a member function bind_param() on boolean in D:\Programme\XMAPP\htdocs\playmobil.php:150 Stack trace: #0 {main} thrown in D:\Programme\XMAPP\htdocs\playmobil.php on line 150

steht doch (fast) alles in der Fehlermeldung: Du versuchst, eine Methode bind_param() von einem boolean aufzurufen, anstatt einem mysqli-Objekt.

Und wie kommt das? Weil du jegliche Fehlerüberprüfung weglässt und dich blind darauf verlässt, dass alle Methodenaufrufe erfolgreich sind.

Die mysql- und mysqli-Funktionen sind bekannt dafür, dass sie im Fehlerfall ein stumpfes boolsches false zurückgeben anstatt einer mysql(i)-Ressource. Genau das muss beim Aufruf von prepare() passiert sein, $absenden2 ist also false.

Abgesehen davon: Warum kopierst du die Werte aus $_POST[] erst um, bevor du sie verwendest? Das ist nicht nur unnötig, sondern manchmal auch tückisch, weil man damit die Herkunft verschleiert.

So long,
 Martin

--
Ich stamme aus Ironien, einem Land am sarkastischen Ozean.