db2_prepare

(PECL ibm_db2 >= 1.0.0)

db2_prepare Prepara uma instrução SQL para ser executada

Descrição

db2_prepare(resource $connection, string $statement, array $options = []): resource|false

db2_prepare() cria uma instrução SQL preparada que pode incluir 0 ou mais marcadores de parâmetros (caracteres ?) representando parâmetros para entrada, saída ou entrada/saída. Pode-se passar parâmetros para a instrução preparada usando db2_bind_param(), ou apenas para valores de entrada, como um array passado para db2_execute().

Existem três vantagens principais em usar instruções preparadas em uma aplicação:

  • Desempenho: quando uma instrução é preparada, o servidor de banco de dados cria um plano de acesso otimizado para recuperar dados com essa instrução. Subsequentemente, emitir a instrução preparada com db2_execute() permite que as instruções reutilizem esse plano de acesso e evita a sobrecarga de criar dinamicamente um novo plano de acesso para cada instrução emitida.

  • Segurança: quando uma instrução é preparada, podem ser incluídos marcadores de parâmetros para valores de entrada. Quando uma instrução preparada é executada com valores de entrada para marcadores, o servidor de banco de dados verifica cada valor de entrada para garantir que o tipo corresponda à definição da coluna ou definição do parâmetro.

  • Funcionalidade avançada: Os marcadores de parâmetros não apenas permitem que sejam passados valores de entrada para instruções SQL preparadas, eles também permitem que sejam recuperados parâmetros OUT e INOUT de procedimentos armazenados usando db2_bind_param().

Parâmetros

connection

Uma variável de recurso de conexão de banco de dados válida, conforme retornada de db2_connect() ou db2_pconnect().

statement

An SQL statement, optionally containing one or more parameter markers..

options

Um array associativo contendo opções de instrução. Você pode usar este parâmetro para solicitar um cursor rolável em servidores de banco de dados que suportam esta funcionalidade.

Para uma descrição das opções de instrução válidas, consulte db2_set_option().

Valor Retornado

Retorna um recurso de instrução se a instrução SQL foi analisada com sucesso e preparada pelo servidor de banco de dados. Retorna false se o servidor de banco de dados retornou um erro. Pode-se determinar qual erro foi retornado chamando db2_stmt_error() ou db2_stmt_errormsg().

Exemplos

Exemplo #1 Preparando e executando uma instrução SQL com marcadores de parâmetros

O exemplo a seguir prepara uma instrução INSERT que aceita quatro marcadores de parâmetros e, em seguida, itera sobre um array de arrays contendo os valores de entrada a serem passados ​​para db2_execute().

<?php
$animals
= array(
array(
0, 'cat', 'Pook', 3.2),
array(
1, 'dog', 'Peaches', 12.3),
array(
2, 'horse', 'Smarty', 350.0),
);

$insert = 'INSERT INTO animals (id, breed, name, weight)
VALUES (?, ?, ?, ?)'
;
$stmt = db2_prepare($conn, $insert);
if (
$stmt) {
foreach (
$animals as $animal) {
$result = db2_execute($stmt, $animal);
}
}
?>

Veja Também

  • db2_bind_param() - Vincula uma variável PHP a um parâmetro de instrução SQL
  • db2_execute() - Executa uma instrução SQL preparada
  • db2_stmt_error() - Retorna uma string contendo o SQLSTATE retornado por uma instrução SQL
  • db2_stmt_errormsg() - Retorna uma string contendo a última mensagem de erro da instrução SQL
adicione uma nota

Notas Enviadas por Usuários (em inglês) 3 notes

up
0
agr dot valayam at gmail dot com
8 years ago
A simple select example.

$pr_stmt = db2_prepare ($this->conn,"select count(*) from note where city=? and year= ?");
db2_execute($pr_stmt,array('test',2016));
$count_res = db2_fetch_array($pr_stmt);
echo "Count =".$count_res[0]
up
0
NormInNorman
15 years ago
If you are having problems with scrollable cursors and the prepare statement, I've found that you cant set the scrollable option on the connection. The following code (which tries to get the 2nd record):

<?php
$sql
= "SELECT * FROM SCHEMA.TABLENAME";
$options = array('cursor' => DB2_SCROLLABLE);
$conn = db2_connect($database, $user, $password,$options);
$stmt = db2_prepare($conn, $sql);
$result = db2_execute($stmt);
$row = db2_fetch_both($stmt, 2);

$conn = db2_connect($database, $user, $password);
$stmt = db2_prepare($conn, $sql, $options);
$result = db2_execute($stmt);
$row = db2_fetch_both($stmt, 2);
?>

Will result in the following error:

Warning: db2_fetch_both() [function.db2-fetch-both]: Fetch Failure in dbtest.php on line 7

In fact, even if you set the options on both the connection and the prepare your fetch will not work. You must only set that option on the prepare.
up
-2
ndt.db2 at google mail
18 years ago
if you have the error message : PHP Warning: db2_prepare() [<a href='function.db2-prepare'>function.db2-prepare</a>]: Statement Prepare Failed in (....)
and cannot display the error message using db2_stmt_errormsg() , then check if your database connection handle is (still) valid
To Top