Achot: Ausgabe eingrenzen

Beitrag lesen

Hallo,

Das ist ein Folgefehler. Der eigentliche Fehler passiert im prepare().

Beim Programmieren muss man stets beachten, wie sich die Funktionen im Fehlerfall verhalten. Bei PHP ist meist der Rückgabewert ein false statt dem sonst üblichen Wert. Das muss man auswerten und darf nicht blind weiterarbeiten, wenn man robuste Programme schreiben möchte, die nicht nur bei Schönwetter funktionieren sollen.

auf http://stackoverflow.com/questions/2552545/mysqli-prepared-statements-error-reporting habe ich gelesen, dass ich die Fehler so abfangen kann

while($wk->fetch()) { 
	
	$stmt = $mysqli->prepare("DELETE FROM warenkorb WHERE id =? ");

	if ( false===$stmt ) {
	  die('prepare() failed: ' . htmlspecialchars($mysqli->error));
	}

	$sc = $stmt->bind_param("i", $id);

	if ( false===$rc ) {
	  die('bind_param() failed: ' . htmlspecialchars($stmt->error));
	}

	$sc = $stmt->execute();
	
	if ( false===$rc ) {
	  die('execute() failed: ' . htmlspecialchars($stmt->error));
	}

	$stmt->close();

 }

Damit erhalte ich folgende Meldung

prepare() failed: Commands out of sync; you can't run this command now

Was mich wundert, ich nutze diesen Löschbefehl auf anderen Unterseiten und dort funktioniert er einwandfrei.