Tach!
Mal ganz unabhängig vom eigentlichen Fehler ...
foreach($daterange as $date){ if ($stmt_datum_kalender = $mysqli->prepare(" INSERT INTO artikel_ausgeliehen ( aa_artikelID, aa_projektID, aa_userID, aa_menge, aa_datum, aa_status, aa_grund, aa_code) VALUES (?, ?, ?, ?, ?, ?, ?, ?)")) { $aa_artikelID = $CodeArtikel; $aa_datum = $date->format("Y-m-d"); $aa_projektID = $CodeProjekt; $aa_userID = $p_userID; $aa_menge = $_POST["avd_menge"]; $aa_status = "4"; $aa_grund = "80"; $aa_code = $ADCode; $stmt_datum_kalender->bind_param("ssssssss", $aa_artikelID, $aa_projektID, $aa_userID, $aa_menge, $aa_datum, $aa_status, $aa_grund, $aa_code); $stmt_datum_kalender->execute(); } else { echo $mysqli -> error; } }
... der Teil hier ist ein klassischer Fall für die eigentlich vorgesehene Verwendung von Prepared Statements: einmal Statement vorbereiten, mehrfach mit unterschiedlichen Werten ausführen.
Im Prinzip wäre das also sinnvollerweise wie folgt umgesetzt:
Prepare
Binding
foreach {
Werte den gebundenen Variablen zuweisen
Execute
}
Damit spart man sich einmal Prepare und Bind je Schleifendurchlauf, sowie je einen Roundtrip zum DBMS, den das Prepare benötigt.
dedlfix.