U moet bindValue gebruiken in plaats van bindParam .
Wanneer u bindParam gebruikt, bindt het de opgegeven variabele aan de parameter, niet de waarde van de variabele.
Dus, als je dat doet:
$x = 5;
$stmt->bindParam(1, $x, PDO::PARAM_INT);
$x = 6;
$stmt->execute(); //executes with 6 instead of 5
Het wordt eigenlijk uitgevoerd met 6 in plaats van 5. Om dit te doen, moet de methode een verwijzing naar de variabele hebben. U kunt geen verwijzing naar een letterlijke waarde hebben, dus dit betekent dat bindParam niet kan worden gebruikt met letterlijke waarden (of iets waar u geen verwijzing naar kunt hebben).
$x = 5;
$stmt->bindValue(1, $x, PDO::PARAM_INT);
$x = 6;
$stmt->execute(); //executes with 5 instead of 6
Dan:
$stmt->bindParam(1, 1, PDO::PARAM_INT);
//invalid because there's no way to pass a literal 1 by reference
$stmt->bindValue(1, 1, PDO::PARAM_INT);
//valid