Christian Kruse: PHP Warnmeldung nach trim()

Beitrag lesen

Hallo Matthias,

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?

Du musst den Rückgabewert von trim() wieder in eine Variable packen. Das geht nicht anders. Du kannst aber auf bindParam() verzichten.

Welchen tieferen Sinn hat diese Warnung?

Du bindest die Variable an den Platzhalter, nicht den Wert. Konkret heisst das, dass du z.B. bindParam() auf ein prepared Statement anwendest und dann in einer Schleife nur den Wert der Variablen änderst:

$stmt = $db->prepare("INSERT INTO foo (:a, :b)");

$a = null;
$b = null;
$stmt->bindParam(":a", $a);
$stmt->bindParam(":b", $b);

while($line = fgets($handle)) {
  list($a,$b) = explode(",", $line);
  $stmt->execute();
}

LG,
CK