# PDOStatement::bindParam

(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.1.0)

PDOStatement::bindParam — Vincula un parámetro al nombre de variable especificado

### Descripción

public PDOStatement::bindParam(
mixed `$parameter`,
mixed `&$variable`,
int `$data_type` = PDO::PARAM_STR,
int `$length` = ?,
mixed `$driver_options` = ?
): bool

Vincula 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.

### Parámetros

`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`

### Valores devueltos

Devuelve `true` en caso de éxito o `false` en caso de error.

### Ejemplos

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");
?>`

### Ver también

- PDO::prepare() - Prepara una sentencia para su ejecución y devuelve un objeto sentencia
- PDOStatement::execute() - Ejecuta una sentencia preparada
- PDOStatement::bindValue() - Vincula un valor a un parámetro