downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | conferences | my php.net

search for in the

odbc_primarykeys> <odbc_pconnect
[edit] Last updated: Fri, 07 Jun 2013

view this page in

odbc_prepare

(PHP 4, PHP 5)

odbc_prepare実行用に文を準備する

説明

resource odbc_prepare ( resource $connection_id , string $query_string )

実行用に文を準備します。 結果 ID は、この後 odbc_execute() で命令を実行する際に使用することができます。

(IBM DB2、MS SQL Server および Oracle のように) ストアドプロシージャが利用可能で、ODBC 仕様で定義されている IN、INOUT および OUT が利用できるものもあります。 しかし、Unified ODBC ドライバでは現在 IN 型のパラメータしかサポートしていません。

パラメータ

connection_id

ODBC 接続 ID。詳細は odbc_connect() を参照ください。

query_string

準備するクエリ文字列。

返り値

SQL コマンドの準備に成功した場合は、ODBC 結果 ID を返します。 エラー時には、FALSE を返します。

例1 odbc_execute() および odbc_prepare() の例

次のコードは、myproc の 3 つのパラメータがすべて IN パラメータである場合にのみ $successTRUE となります。

<?php
$a 
1;
$b 2;
$c 3;
$stmt    odbc_prepare($conn'CALL myproc(?,?,?)');
$success odbc_execute($stmt, array($a$b$c));
?>

INOUT や OUT パラメータを用いるストアドプロシージャをコールしたい場合は、 各データベース専用の拡張モジュール (たとえば MS SQL Server なら mssql、 Oracle なら oci8) を使うようにしましょう。

参考

  • odbc_execute() - プリペアドステートメントを実行する



odbc_primarykeys> <odbc_pconnect
[edit] Last updated: Fri, 07 Jun 2013
 
add a note add a note User Contributed Notes odbc_prepare - [4 notes]
up
0
Ron
5 years ago
odbc_exec() returns BOOLEAN if the query doesn't return a result set.

If the query returns a result set, odbc_exec() returns a resource to that result set.
up
0
bslorence
6 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
0
Marek
8 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));
up
-1
brad dot westness at gmail dot com
2 years ago
When working with MSSQL over FreeTDS, calling a stored procedure that accepts a variable in the following way DOES NOT work:
<?php
$results
= odbc_prepare($conn, "{CALL sp_Test(?)}");
odbc_exec($results, array("some string"));
?>
From what I've gleaned via trial and error, the "some string" never gets sufficiently bound to the ? as the variable input (perhaps because there is no ODBC equivalent to the mssql_bind() method). The stored procedure will always return an SQL Server error code HY000.

The following works for me (although I don't think it's documented anywhere):
<?php
$results
= odbc_prepare($conn, "{CALL sp_Test('some string')}");
odbc_exec($results, array());
?>

 
show source | credits | stats | sitemap | contact | advertising | mirror sites