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.