PDOStatement::execute

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

PDOStatement::execute Executa ums instrução preparada

Descrição

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

Executa a instrução preparada. Se a instrução preparada inclui marcadores de parâmetros:

  • PDOStatement::bindParam() e/ou PDOStatement::bindValue() devem ser chamadas para vincular variáveis ou valores (respectivamente) aos marcadores de parâmetros. Variáveis vinculadas passam seus valores como entrada e recebem o valor de saída, se houver, de seus marcadores de parâmetros associados

  • ou um array de valores de parâmetros, de entrada somente, deve ser passado

Parâmetros

params

Um array de valores com tantos elementos quantos forem os parâmetros vinculados na instrução SQL sendo executada. Todos os valores são tratados como PDO::PARAM_STR.

Valores múltiplos não podem ser vinculados a um parâmetro único; por exemplo, não é permitido vincular dois valores a um único parâmetro nomeado em uma cláusula IN().

Vincular mais valores que o especificado não é possível; se existirem mais chaves em params que no SQL especificado em PDO::prepare(), a instrução falhará e um erro será emitido.

Valor Retornado

Retorna true em caso de sucesso ou false em caso de falha.

Erros/Exceções

Emite um erro de nível E_WARNING se o atributo PDO::ATTR_ERRMODE estiver definido como PDO::ERRMODE_WARNING.

Lança uma exceção PDOException se o atributo PDO::ATTR_ERRMODE estiver definido como PDO::ERRMODE_EXCEPTION.

Exemplos

Example #1 Executa uma instrução preparada com variável e valor vinculados

<?php
/* Executa uma instrução preparada vinculando uma variável e um valor */
$calorias = 150;
$cor = 'ver';
$sth = $dbh->prepare('SELECT nome, cor, calorias
    FROM frutas
    WHERE calorias < :calorias AND cor LIKE :cor');
$sth->bindParam('calorias', $calorias, PDO::PARAM_INT);
/* Nomes podem ser prefixados com dois-pontos ":" também (opcional) */
$sth->bindValue(':cor', "%$cor%");
$sth->execute();
?>

Example #2 Executa uma instrução preparada com um array de valores nomeados

<?php
/* Executa uma instrução preparada passando um array de valores de inserção */
$calorias = 150;
$cor = 'vermelha';
$sth = $dbh->prepare('SELECT nome, cor, calorias
    FROM frutas
    WHERE calorias < :calorias AND cor = :cor');
$sth->execute(array('calorias' => $calorias, 'cor' => $cor));
/* Chaves de array podem ser prefixadas com dois-pontos ":" também (opcional) */
$sth->execute(array(':calorias' => $calorias, ':cor' => $cor));
?>

Example #3 Executa uma instrução preparada com um array de valores posicionais

<?php
/* Executa uma instrução preparada passando um array de valores de inserção */
$calorias = 150;
$cor = 'vermelha';
$sth = $dbh->prepare('SELECT nome, cor, calorias
    FROM frutas
    WHERE calorias < ? AND cor = ?');
$sth->execute(array($calorias, $cor));
?>

Example #4 Executa uma instrução preparada com variáveis vinculadas a marcadores posicionais

<?php
/* Executa uma instrução preparada vinculando variáveis PHP */
$calorias = 150;
$cor = 'vermelha';
$sth = $dbh->prepare('SELECT nome, cor, calorias
    FROM frutas
    WHERE calorias < ? AND cor = ?');
$sth->bindParam(1, $calorias, PDO::PARAM_INT);
$sth->bindParam(2, $cor, PDO::PARAM_STR, 12);
$sth->execute();
?>

Example #5 Executa uma instrução preparada usando array para cláusula IN

<?php
/* Executa uma instrução preparada usando um array de valores para uma cláusula IN */
$params = array(1, 21, 63, 171);
/* Cria uma string para marcadores de parâmetros preenchidas com o número de parâmetros */
$place_holders = '?' . str_repeat(', ?', count($params) - 1);

/*
    Isto prepara a instrução com marcadores anônimos suficientes para cada valor
    no array $params. Os valores do array $params são então vinculados aos
    marcadores na instrução preparada quando ele é executada.
    Isto não é a mesma coisa que usar PDOStatement::bindParam() já que isso
    requer uma referência à variável. PDOStatement::execute() apenas vincula
    por valor.
*/
$sth = $dbh->prepare("SELECT id, nome FROM contatos WHERE id IN ($place_holders)");
$sth->execute($params);
?>

Notas

Note:

Alguns drivers requerem que o cursor seja fechado antes que a próxima instrução seja executada.

Veja Também