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, 26 Apr 2013

view this page in

odbc_prepare

(PHP 4, PHP 5)

odbc_preparePrepares a statement for execution

Description

resource odbc_prepare ( resource $connection_id , string $query_string )

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.

Parameters

connection_id

The ODBC connection identifier, see odbc_connect() for details.

query_string

The query string statement being prepared.

Return Values

Returns an ODBC result identifier if the SQL command was prepared successfully. Returns FALSE on error.

Examples

Example #1 odbc_execute() and odbc_prepare() example

In the following code, $success will 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).

See Also



odbc_primarykeys> <odbc_pconnect
[edit] Last updated: Fri, 26 Apr 2013
 
add a note add a note User Contributed Notes odbc_prepare - [4 notes]
up
0
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());
?>
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));

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