Ver Mensaje Individual
  #3 (permalink)  
Antiguo 28/10/2013, 22:32
Avatar de reborn
reborn
 
Fecha de Ingreso: febrero-2010
Mensajes: 440
Antigüedad: 14 años, 10 meses
Puntos: 1
Respuesta: PDO MySQL: Diferencia entre bindParam y bindValue?

Cita:
Iniciado por GatorV Ver Mensaje
Como dicen el mismo nombre la diferencia es esa, bindValue ata un parámetro a un valor dado, y bindParam a una variable, por lo que puedes hacer consultas preparadas en un ciclo, por ejemplo:
Código PHP:
Ver original
  1. $stmt = $con->prepare("INSERT INTO colors VALUES (?)");
  2. $stmt->bindParam(1, $color, PDO::PARAM_STR);
  3.  
  4. $colors = array('black', 'blue', 'red', 'yellow');
  5. foreach ($colors as $color) {
  6.         $stmt->execute();
  7. }

Con bindValue solo lo haces al valor que le defines al momento que mandas llamar.

El que uses cualquiera de los dos, te ayuda a prevenir inyecciones por el simple hecho de que primero se manda la consulta preparada al servidor y luego mandas los valores, con lo cual previenes la inyección.

Saludos.
Gracias pero igual sigo confundido, ya q en el manual de php dice lo mismo q me estas explicando vos y da los mismos ejemplos para los dos casos y no me doy cuenta de la diferencia.

bindValue: Vincula un valor al parámetro de sustitución...

bindParam: Vincula una variable de PHP a un parámetro de sustitución con nombre...

Lo q no logro entender es, en este caso, a q le llama Valor y a q Variable...

Yo lo entiendo como q bindValue se usa para un valor unico o estatico y bindParam como en el ejemplo q me diste vos, con el array, para muchos valores dentro de una variable.

Esa es la diferencia q no puedo ver