(PECL ibm_db2 >= 1.0.0)
db2_prepare — Подготавливает SQL-запрос к выполнению
$connection
, string $statement
, array $options
= []): resource|false
db2_prepare() создаёт подготовленный SQL-запрос, который может включать 0
или более маркеров параметров (символов ?
), представляющих входные параметры, параметры вывода
или входные параметры и параметры вывода.
Вы можете передать параметры подготовленному запросу, используя db2_bind_param()
или только для входных значений в виде массива, переданного в db2_execute().
Использование подготовленных запросов в вашем приложении даёт три основных преимущества:
Производительность: при использовании подготовленного запроса, сервер базы данных создаёт оптимизированный план доступа для извлечения данных с помощью этого запроса. Последующее выполнение подготовленного запроса с помощью db2_execute() позволяет операторам повторно использовать этот план доступа и позволяет избежать накладных расходов на динамическое создание нового плана доступа для каждого выполняемого вами запроса.
Безопасность: при использовании подготовленного запроса, вы можете включить маркеры параметров для входных значений. Когда вы выполняете подготовленный запрос с входными значениями для заполнителей, сервер базы данных проверяет каждое входное значение, чтобы убедиться, что тип соответствует определению столбца или определению параметра.
Расширенный функционал: Маркеры параметров не только позволяют передавать входные значения в подготовленные SQL-запросы, они также позволяют извлекать параметры OUT и INOUT из хранимых процедур с помощью db2_bind_param().
connection
Допустимая переменная ресурса подключения к базе данных, возвращаемая функцией db2_connect() или db2_pconnect().
statement
SQL-запрос, необязательно содержащий один или несколько маркеров параметров.
options
Ассоциативный массив, содержащий параметры запроса. Параметры можно использовать для запроса прокручиваемого курсора на серверах баз данных, поддерживающих эту функцию.
Описание допустимых опций запроса смотрите в разделе db2_set_option().
Возвращает ресурс оператора, если SQL-запрос был успешно проанализирован и подготовлен сервером базы данных.
Возвращает false
, если сервер базы данных вернул ошибку.
Вы можете определить, какая ошибка была возвращена, вызвав
db2_stmt_error() или db2_stmt_errormsg().
Пример #1 Подготовка и выполнение SQL-запроса с маркерами параметров
В следующем примере подготавливается запрос INSERT, который принимает четыре маркера параметров, а затем выполняет итерацию по массиву массивов, содержащих входные значения, которые необходимо передать в 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);
}
}
?>