odbc_prepare()
(PHP 4, PHP 5, PHP 7)
Prepares a statement for execution
说明
odbc_prepare(resource $connection_id,string $query_string): resource
Prepares a statement for execution. The result identifier can be used later to execute the statement with odbc_execute().
Some databases(such as IBM DB2, MS SQL Server, and Oracle)support stored procedures that accept parameters of type IN, INOUT, and OUT as defined by the ODBC specification. However, the Unified ODBC driver currently only supports parameters of type IN to stored procedures.
参数
- $connection_id
ODBC 连接标识符,详见odbc_connect()。
- $query_string
The query string statement being prepared.
返回值
Returns an ODBC result identifier if the SQL command was prepared successfully. Returns FALSE
on error.
范例
Example #1 odbc_execute() and odbc_prepare() example
In the following code,$successwill only be TRUE
if all three parameters to myproc are IN parameters:
<?php $a = 1; $b = 2; $c = 3; $stmt = odbc_prepare($conn, 'CALL myproc(?,?,?)'); $success = odbc_execute($stmt, array($a, $b, $c)); ?>
If you need to call a stored procedure using INOUT or OUT parameters, the recommended workaround is to use a native extension for your database(for example,mssql for MS SQL Server, or oci8 for Oracle).
参见
odbc_execute()
Execute a prepared statement
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 } ?>
The resource returned by odbc_prepare can be freed with odbc_free_result.
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));
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.