Rolf B: Kein Insert wenn Feld leer

Beitrag lesen

Hallo Bernd,

das Errorhandling von bind_param und execute ist kaputt. Keine Ahnung, aus welcher Vorlage Du das hast. Damit deine Abfrage funktioniert, müsste der Inhalt von $stmt_datum_kalender bei einem Fehler zu FALSE mutieren. Sowas passiert nicht. Statt dessen geben die beiden Methoden TRUE oder FALSE zurück, je nach Erfolg. Das musst Du abfragen.

Und den Fehlergrund findest Du nicht in der (möglicherweise undefinierten) Variablem $stmt, sondern ...?

Mit diesem Fix hier komme ich auch nicht klar:

      if ($p_userID == "") {
					$aa_userID	= "";
			} else {
					$aa_userID	= $p_userID;
			}

Diese Abfrage hat - im Vergleich der einfachen Zuweisung die da vorher stand - nur dann irgendeinen Effekt, wenn $p_userID den Wert NULL hat. Demzufolge solltest Du auch ausdrücklich auf NULL abfragen. Verwendest Du PHP 7? Dann kannst Du den "NULL Coalescing Operator" ?? verwenden. Frei übersetzt: Den Nullersatz-Operator. Mit $a ?? $b bekommst Du den Wert von $a, solange es nicht NULL ist. IST es NULL, bekommst Du den Ersatzwert $b.

// PHP 7:
      $aa_userID = $p_userID ?? "";
// PHP 5.6:
      $aa_userID = $p_userID !== NULL ? $p_userID : "";

Rolf

--
sumpsi - posui - clusi