odbc_prepare

(PHP 4, PHP 5, PHP 7, PHP 8)

odbc_prepareПодготавливает запрос к выполнению

Описание

odbc_prepare(Odbc\Connection $odbc, string $query): Odbc\Result|false

Функция подготавливает запрос к выполнению. Объект ODBC с результатом затем передают в функцию odbc_execute() для выполнения запроса.

Отдельные базы данных наподобие IBM DB2, MS SQL Server и Oracle поддерживают хранимые процедуры, которые принимают in-, inout- и out-параметры, как определяет спецификация протокола ODBC. Однако драйвер Unified ODBC пока поддерживает для хранимых процедур только in-параметры.

Список параметров

odbc

Объект ODBC-соединения. Подробнее о коннекторе рассказывает описание функции odbc_connect().

query

Подготавливаемый запрос в виде строки.

Возвращаемые значения

Функция возвращает объект ODBC с результатом, если подготовка SQL-команды выполнилась успешно. Функция возвращает значение false, если возникла ошибка.

Список изменений

Версия Описание
8.4.0 Параметр odbc теперь ожидает экземпляр соединения Odbc\Connection; раньше ожидался аргумент с типом resource.
8.4.0 Функция теперь возвращает объект с результатом ODBC-запроса Odbc\Result; раньше возвращалось значение с типом resource.

Примеры

Пример #1 Пример подготовки запроса к выполнению функциями odbc_execute() и odbc_prepare()

В следующем примере переменной $success присвоится значение true, только если каждый из трёх параметров в списке параметров для выполнения хранимой процедуры myproc относится ко входному in-параметру, — передаётся в процедуру по значению:

<?php

$a
= 1;
$b = 2;
$c = 3;

$stmt = odbc_prepare($conn, 'CALL myproc(?, ?, ?)');
$success = odbc_execute($stmt, array($a, $b, $c));

?>

Для вызова хранимой процедуры с inout-параметром, который передаётся по ссылке, или с out-параметром, который возвращается из процедуры по значению, лучше отправить запрос через родной модуль базы данных наподобие модуля oci8 для СУБД Oracle.

Смотрите также

Добавить

Примечания пользователей 4 notes

up
13
bslorence
18 years ago
Is it just me or is the code above misleading? It makes it look like odbc_execute() returns a resource suitable, say, for passing to one of the odbc_fetch_* functions.In fact, odbc_execute() returns a boolean, which simply indicates success (TRUE) or failure (FALSE). The variable to pass to odbc_fetch_* is the same one that you pass to odbc_execute():<?php$res = odbc_prepare($db_conn, $query_string);if(!$res) die("could not prepare statement ".$query_string);if(odbc_execute($res, $parameters)) {    $row = odbc_fetch_array($res);} else {    // handle error}?>
up
1
lzsiga at freemail dot c3 dot hu
6 years ago
The resource returned by odbc_prepare can be freed with odbc_free_result.
up
1
info dot codesquare at gmail dot com
1 year ago
after 2 days finaly got a working code(SQL SERVER stored procedure with parameters through ODBC)STORED PROCEDURESET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOALTER PROCEDURE [dbo].[sp_prev_frm_prev2]    @id int,     @cli nchar(20)ASBEGIN    SET NOCOUNT ON;    --SELECT 1ENDPHP$stmt=odbc_prepare($conn,'{call db.dbo.sp_prev_frm_prev2(?,?)}');$params=array(1,"clie");$result = odbc_execute($stmt, $params);
up
1
Marek
20 years ago
Use this example for IBM DB/2:$q = "update TABLE set PASS=? where NAME=?";$res = odbc_prepare ($con, $q);$a = "secret"; $b="user";$exc = odbc_execute($res, array($a, $b));
To Top