Qual é a diferença entre bindParam e bindValue no PDO? Explicação detalhada com exemplos
Olá a todos! Comecei a estudar PDO e me deparei com dois métodos: `bindParam()` e `bindValue()`. A documentação diz que ambos são usados para vincular parâmetros a uma prepared statement, mas não consigo entender qual é a diferença entre eles.
Tenho este código:
```php
$stmt = $pdo->prepare('SELECT * FROM users WHERE id = :id');
$id = 5;
$stmt->bindParam(':id', $id);
$stmt->execute();
```
Se eu substituir `bindParam` por `bindValue`, o resultado será o mesmo. Mas ouvi dizer que há uma diferença importante relacionada à passagem por referência. Vocês podem explicar com exemplos simples quando usar `bindParam` e quando usar `bindValue`? E por que existem dois métodos se eles fazem a mesma coisa?
Estou especialmente interessado na situação com loops. Vi código onde `bindParam` é chamado dentro de um loop, e isso não funciona como esperado. Por que isso acontece? Agradeço desde já!
<<>>
Diferença principal: passagem por referência vs por valor
A principal diferença entre bind