dedlfix: Kein Insert wenn Feld leer

Beitrag lesen

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.