Der Unterschied zwischen bindParam und bindValue ist im Grunde in einem Satz zu erklären: Bei bindParam werden im Gegensatz zu bindValue nachträgliche Änderungen der Variablen berücksichtigt.
bindParam
$sex = 'male'; $s = $dbh->prepare('SELECT name FROM students WHERE sex = :sex'); $s->bindParam(':sex', $sex); // use bindParam to bind the variable $sex = 'female'; $s->execute(); // executed with WHERE sex = 'female'
bindValue
$sex = 'male'; $s = $dbh->prepare('SELECT name FROM students WHERE sex = :sex'); $s->bindValue(':sex', $sex); // use bindParam to bind the variable $sex = 'female'; $s->execute(); // executed with WHERE sex = 'male'
Quelle vom Beispiel: https://stackoverflow.com/questions/1179874/what-is-the-difference-between-bindparam-and-bindvalue//