(PHP 5 >= 5.1.0, PHP 7, PECL pdo >= 0.1.0)
PDOStatement::bindParam — Vincula un parámetro al nombre de variable especificado
$parameter
, mixed &$variable
[, int $data_type
= PDO::PARAM_STR
[, int $length
[, mixed $driver_options
]]] ) : boolVincula una variable de PHP a un parámetro de sustitución con nombre o de signo de interrogación correspondiente de la sentencia SQL que fue usada para preparar la sentencia. A diferencia de PDOStatement::bindValue(), la variable es vinculada como una referencia y solamente será evaluada en el momento en el que se llame a PDOStatement::execute().
Muchos parámetros son de entrada, es decir, que son usados en un modo de sólo lectura para construir la consulta. Algunos controladores admiten la invocación de procedimientos almacenados que devuelven datos como parámetros de salida, y algunos también como parámetros de entrada/salida, donde se envían datos y son actualizados al recibirlos.
parameter
El identificador del parámetro. Para sentencias preparadas que usen parámetros de sustición con nombre, esto será un nombre de parámetro con la forma :nombre. Para sentencias preparadas que usen parámetros de sustición de signos de interrogación, esto será la posición índice-1 del parámetro.
variable
Nombre de la variable de PHP a vincular al parámetro de la sentencia SQL.
data_type
El tipo de datos explícito para el parámetro, usando las constantes
PDO::PARAM_*.
Para devolver un parámetro INOUT desde un procedimiento almacenado,
se ha de usar el operador OR a nivel de bits para establecer los bits de
PDO::PARAM_INPUT_OUTPUT para el parámetro data_type
.
length
La longitud del tipo de datos. Para indicar que el parámetro es un parámetro OUT de un procedimiento almacenado, se debe establecer explícitamente la longitud.
driver_options
Devuelve TRUE
en caso de éxito o FALSE
en caso de error.
Ejemplo #1 Ejecutar una sentencia preparada con parámetros de sustitución con nombre
<?php
/* Ejecutar una sentencia preparada vinculando varialbes de PHP */
$calorías = 150;
$color = 'red';
$gsent = $gbd->prepare('SELECT name, colour, calories
FROM fruit
WHERE calories < :calories AND colour = :colour');
$gsent->bindParam(':calories', $calorías, PDO::PARAM_INT);
$gsent->bindParam(':colour', $color, PDO::PARAM_STR, 12);
$gsent->execute();
?>
Ejemplo #2 Ejecutar una sentencia preparada con parámetros de sustitución de signos de interrogación
<?php
/* Ejecutar una sentencia preparada vinculando varialbes de PHP */
$calorías = 150;
$color = 'red';
$gsent = $gbd->prepare('SELECT name, colour, calories
FROM fruit
WHERE calories < ? AND colour = ?');
$gsent->bindParam(1, $calorías, PDO::PARAM_INT);
$gsent->bindParam(2, $color, PDO::PARAM_STR, 12);
$gsent->execute();
?>
Ejemplo #3 Llamar a un procedimiento almacenado con un parámetro INOUT
<?php
/* Llamar a un procedimiento almacenado con un parámetro INOUT */
$color = 'red';
$gsent = $gbd->prepare('CALL puree_fruit(?)');
$gsent->bindParam(1, $color, PDO::PARAM_STR|PDO::PARAM_INPUT_OUTPUT, 12);
$gsent->execute();
print("Después de hacer puré la fruta, el color es: $color");
?>