(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.1.0)
PDOStatement::execute — Ejecuta una consulta preparada
Ejecuta una consulta preparada. Si la consulta preparada incluye marcadores de posición, se puede:
PDOStatement::bindParam() y/o PDOStatement::bindValue() debe ser llamado para vincular variables o valores (respectivamente) a los marcadores de parámetros. Las variables vinculadas pasan sus valores en entrada y reciben los valores de salida, si los hay, de sus respectivos marcadores de posición
o pasar un array de valores de parámetros, solo en entrada
params
Un array de valores con tantos elementos como parámetros a asociar en la consulta SQL que será ejecutada.
Todos los valores son tratados como constantes
PDO::PARAM_STR
.
Los valores múltiples no pueden ser vinculados a un solo parámetro; por ejemplo, no está permitido vincular dos valores a un solo parámetro nombrado en una cláusula IN().
Vincular más valores de los especificados no es posible; si hay
más claves en params
que en el
código SQL utilizado para PDO::prepare(), entonces la
consulta preparada fallará y se generará un error.
Emits an error with level E_WARNING
if the attribute PDO::ATTR_ERRMODE
is set
to PDO::ERRMODE_WARNING
.
Throws a PDOException if the attribute PDO::ATTR_ERRMODE
is set to PDO::ERRMODE_EXCEPTION
.
Ejemplo #1 Ejecuta una consulta preparada con variables y valores vinculados
<?php
/* Ejecuta una consulta preparada vinculando variables y valores */
$calories = 150;
$couleur = 'ver';
$sth = $dbh->prepare('SELECT nom, couleur, calories
FROM fruit
WHERE calories < :calories AND couleur LIKE :couleur');
$sth->bindParam('calories', $calories, PDO::PARAM_INT);
/* Los nombres también pueden ser prefijados con dos puntos ":" (opcional) */
$sth->bindValue(':colour', "%$colour%");
$sth->execute();
?>
Ejemplo #2 Ejecuta una consulta preparada con un array de valores nombrados
<?php
/* Ejecuta una consulta preparada pasando un array de valores */
$calories = 150;
$couleur = 'rouge';
$sth = $dbh->prepare('SELECT nom, couleur, calories
FROM fruit
WHERE calories < :calories AND couleur = :couleur');
$sth->execute(array('calories' => $calories, 'colour' => $couleur));
/* Las claves del array también pueden ser prefijadas con dos puntos ":" (opcional) */
$sth->execute(array(':calories' => $calories, ':couleur' => $couleur));
?>
Ejemplo #3 Ejecuta una consulta preparada con un array de valores posicionales
<?php
/* Ejecuta una consulta preparada pasando un array de valores */
$calories = 150;
$colour = 'rouge';
$sth = $dbh->prepare('SELECT nom, couleur, calories
FROM fruit
WHERE calories < ? AND couleur = ?');
$sth->execute(array($calories, $colour));
?>
Ejemplo #4 Ejecuta una consulta preparada con variables vinculadas a un marcador de posición
<?php
/* Ejecuta una consulta preparada vinculando variables PHP */
$calories = 150;
$couleur = 'rouge';
$sth = $dbh->prepare('SELECT nom, couleur, calories
FROM fruit
WHERE calories < ? AND couleur = ?');
$sth->bindParam(1, $calories, PDO::PARAM_INT);
$sth->bindParam(2, $couleur, PDO::PARAM_STR, 12);
$sth->execute();
?>
Ejemplo #5 Ejecuta una consulta preparada utilizando un array para las cláusulas IN
<?php
/* Ejecuta una consulta preparada utilizando un array de valores para las cláusulas IN */
$params = array(1, 21, 63, 171);
/* Crea una cadena para los marcadores */
$place_holders = '?' . str_repeat(', ?', count($params) - 1);
/*
Este fragmento de código prepara la consulta con suficientes marcadores para cada valor
del array $params. Los valores del array $params son luego vinculados a los marcadores
de la consulta preparada cuando la consulta es ejecutada. Esto no es lo mismo
que utilizar el método PDOStatement::bindParam() ya que este impone una referencia
hacia los valores. El método PDOStatement::execute() solo vincula por valor.
*/
$sth = $dbh->prepare("SELECT id, name FROM contacts WHERE id IN ($place_holders)");
$sth->execute($params);
?>
Nota:
Algunos drivers requieren cerrar el cursor antes de ejecutar la siguiente consulta.