odbc_prepare
(PHP 4, PHP 5, PHP 7, PHP 8)
odbc_prepare — 実行用に文を準備する
説明
実行用に文を準備します。 結果 ID は、この後 odbc_execute() で命令を実行する際に使用することができます。
(IBM DB2、MS SQL Server および Oracle のように) ストアドプロシージャが利用可能で、ODBC 仕様で定義されている IN、INOUT および OUT が利用できるものもあります。 しかし、Unified ODBC ドライバでは現在 IN 型のパラメータしかサポートしていません。
戻り値
SQL コマンドの準備に成功した場合は、ODBC 結果 ID を返します。
エラー時には、false
を返します。
例
例1 odbc_execute() および odbc_prepare() の例
次のコードは、myproc の 3 つのパラメータがすべて IN
パラメータである場合にのみ $success
が true
となります。
<?php
$a = 1;
$b = 2;
$c = 3;
$stmt = odbc_prepare($conn, 'CALL myproc(?,?,?)');
$success = odbc_execute($stmt, array($a, $b, $c));
?>
INOUT や OUT パラメータを用いるストアドプロシージャをコールしたい場合は、 各データベース専用の拡張モジュール (たとえば Oracle なら oci8) を使うようにしましょう。
+add a note
User Contributed Notes 4 notes
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
}
?>
lzsiga at freemail dot c3 dot hu ¶
5 years ago
The resource returned by odbc_prepare can be freed with odbc_free_result.
info dot codesquare at gmail dot com ¶
10 months ago
after 2 days finaly got a working code
(SQL SERVER stored procedure with parameters through ODBC)
STORED PROCEDURE
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[sp_prev_frm_prev2]
@id int,
@cli nchar(20)
AS
BEGIN
SET NOCOUNT ON;
--SELECT 1
END
PHP
$stmt=odbc_prepare($conn,'{call db.dbo.sp_prev_frm_prev2(?,?)}');
$params=array(1,"clie");
$result = odbc_execute($stmt, $params);
↑ and ↓ to navigate •
Enter to select •
Esc to close
Press Enter without
selection to search using Google