dedlfix: PHP Warnmeldung nach trim()

Beitrag lesen

Tach!

vorher: bindParam(':klassenstufe', $_POST['klassenstufe'])

jetzt: bindParam(':klassenstufe', trim($_POST['klassenstufe']))

Das führt zu folgender Warnung:

Strict Standards: Only variables should be passed by reference

Muss ich da wirklich dies draus machen

$_POST['klassenstufe'] = trim($_POST['klassenstufe']);
bindParam(':klassenstufe', $_POST['klassenstufe']);

oder gibt es einen anderen Weg? Welchen tieferen Sinn hat diese Warnung?

bindParam() bindet eine Variable per Referenz und übergibt nicht nur eine Kopie des Wertes. Wenn du später den Variableninhalt änderst, wird der geänderte Wert genommen, an der Stelle, die auf diese gebundene Variable zugreift, in dem Fall das Execute.

Du sollst da kein Funktionsergebnis übergeben, weil das keine Variable ist. Es kann aber sein, dass das trotzdem läuft, solange du nicht mehrfach Execute aufrufen möchtest.

Du nimmst doch PDO, oder? Alternativ kannst du dann die bindParam-Geschichte weglassen und stattdessen die Werte dem Execute in Form eines Arrays übergeben. Zum Erstellen des Arrays kannst du auch Funktionsergebnisse direkt verwenden.

dedlfix.