PDOStatement::execute

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

PDOStatement::execute Ejecuta una consulta preparada

Descripción

public PDOStatement::execute(?array $params = null): bool

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

Parámetros

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.

Valores devueltos

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

Errores/Excepciones

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.

Ejemplos

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

Notas

Nota:

Algunos drivers requieren cerrar el cursor antes de ejecutar la siguiente consulta.

Ver también