PDOStatement::execute
(PHP 5 >= 5.1.0, PECL pdo >= 0.1.0)
PDOStatement::execute — Ejecuta una sentencia preparada
Descripción
$input_parameters
] )Ejecuta una sentencia preparada. Si ésta incluye marcadores de parámetros, se debe:
llamar a PDOStatement::bindParam() para vincular variables de PHP a los marcadores de parámetros: al vincular las variables se pasan sus valores como entrada y se recibe el valor de salida, si lo hubiera, de los marcadores de los parámetros asociados
o pasar un array de valores de parámetros de sólo entrada
Parámetros
-
input_parameters -
Un array de valores con tantos elementos como parámetros vinculados en la sentencia SQL que va a ser ejecutada. Todos los valores son tratados como
PDO::PARAM_STR.No es posible vincular múltiples valores a un único parámetro; por ejemplo, no se puede vincular dos valores a un único parámetro con nombre en una cláusula IN().
Tampoco es posible vincular más valores que los especificados; si existen más claves en
input_parametersque en la sentencia SQL especificada en PDO::prepare(), entonces la sentencia fallará y se emitirá un error.
Valores devueltos
Devuelve TRUE en caso de éxito o FALSE en caso de error.
Historial de cambios
| Versión | Descripción |
|---|---|
| 5.2.0 |
Las claves de input_parameters deben coincidir con aquellas
declaradas en la sentencia SQL. Antes de PHP 5.2.0 esto se ignoraba silenciosamente.
|
Ejemplos
Ejemplo #1 Ejecutar una sentencia preparada con variables vinculadas
<?php
/* Ejecutar una sentencia preparada vinculando variables 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 un array de valores de inserción (parámetros con nombre)
<?php
/* Ejecutar una sentencia preparada proporcionando un array de valores de inserción */
$calorías = 150;
$color = 'red';
$gsent = $gbd->prepare('SELECT name, colour, calories
FROM fruit
WHERE calories < :calories AND colour = :colour');
$gsent->execute(array(':calories' => $calorías, ':colour' => $color));
?>
Ejemplo #3 Ejecutar una sentencia preparada con un array de valores de inserción (parámetros de sustitución)
<?php
/* Ejecutar una sentencia preparada proporcionando un array de valores de inserción */
$calorías = 150;
$color = 'red';
$gsent = $gbd->prepare('SELECT name, colour, calories
FROM fruit
WHERE calories < ? AND colour = ?');
$gsent->execute(array($calorías, $color));
?>
Ejemplo #4 Ejecutar una senetencia preparada con parámetros de sustitución de signos de interrogación
<?php
/* Ejecutar una sentencia preparada vinculando variables 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 #5 Ejecutar una sentencia preparada usando un array para la cláusula IN
<?php
/* Ejecutar una sentencia preparada usando un array de valores para una cláusula IN */
$parámetros = array(1, 21, 63, 171);
/* Crear una cadena para los parámetros de sustitución rellenados con el número de parámetros */
$place_holders = implode(',', array_fill(0, count($parámetros), '?'));
/*
Esto prepara una sentencia con suficientes parámetros de sustitución sin nombre para
cada valor del array $parámetros. Los valores del array $parámetros son vinculados a
los parámetros de sustitución de la sentencia preparada cuando ésta sea ejecutada.
Esto no es lo mismo que usar PDOStatement::bindParam(), pues esto último
requiere una referencia a la variable. En su lugar, PDOStatement::execute() sólo
vincula por valor.
*/
$gsent = $gbd->prepare("SELECT id, name FROM contacts WHERE id IN ($place_holders)");
$gsent->execute($parámetros);
?>
Notas
Nota:
Algunos controladores necesitan cerrar los cursores antes de poder ejecutar la siguiente sentencia.
Ver también
- PDO::prepare() - Prepara una sentencia para su ejecución y devuelve un objeto sentencia
- PDOStatement::bindParam() - Vincula un parámetro al nombre de variable especificado
- PDOStatement::fetch() - Obtiene la siguiente fila de un conjunto de resultados
- PDOStatement::fetchAll() - Devuelve un array que contiene todas las filas del conjunto de resultados
- PDOStatement::fetchColumn() - Devuelve una única columna de la siguiente fila de un conjunto de resultados