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.
odbc_prepare
(PHP 4, PHP 5)
odbc_prepare — Çalıştırılmak üzere bir deyim hazırlar
Açıklama
$bağlantı_kimliği
, string $sorgu_dizgesi
)Çalıştırılmak üzere bir deyim hazırlar. Elde edilen sonuç tanıtıcısı odbc_execute() işlevinde kullanılarak deyim daha sonra çalıştırılabilir.
Bazı veritabanları (IBM DB2, MS SQL Server ve Oracle gibi), ODBC belirtiminde belirtildiği gibi IN, INOUT ve OUT türünde değiştirgeler kabul eden saklanmış yordamları destekler. Ancak, Tekilleştirilmiş ODBC sadece IN türündeki değiştirgeleri desteklemektedir.
Değiştirgeler
-
bağlantı_kimliği -
ODBC bağlantı tanıtıcısı; ayrıntılar için odbc_connect() işlevine bakınız.
-
sorgu_dizgesi -
Hazırlanan deyimi içeren sorgu dizgesi.
Dönen Değerler
Hata durumunda FALSE yoksa SQL komutu hazırlanabilmişse istenen bilgiyi
içeren bir ODBC sonuç tanıtıcısı döner.
Örnekler
Örnek 1 - odbc_execute() ve odbc_prepare() örneği
Aşağıdaki örnekte, myproc'un üç değiştirgesi de IN türünde olduğu takdirde $success daima TRUE olacaktır:
<?php
$a = 1;
$b = 2;
$c = 3;
$stmt = odbc_prepare($conn, 'CALL myproc(?,?,?)');
$success = odbc_execute($stmt, array($a, $b, $c));
?>
INOUT veya OUT türünde değiştirgeler kullanan saklanmış yordamlara ihtiyacınız varsa veritabanınızın kendi eklentisini kullanınız (örneğin, MS SQL Sunucusu için mssql, Oracle için oci8 gibi).
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
}
?>
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));
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());
?>
