PHPerKaigi 2024

odbc_prepare

(PHP 4, PHP 5, PHP 7, PHP 8)

odbc_prepareÇalıştırılmak üzere bir deyim hazırlar

Açıklama

odbc_prepare(resource $odbc, string $sorgu): resource|false

Ç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 bağımsız değişkenler kabul eden saklanmış yordamları destekler. Ancak, Tekilleştirilmiş ODBC sadece IN türündeki bağımsız değişkenleri desteklemektedir.

Bağımsız Değişkenler

odbc

ODBC bağlantı tanıtıcısı; ayrıntılar için odbc_connect() işlevine bakınız.

sorgu

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 üç bağımsız değişkeni 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 bağımsız değişkenler kullanan saklanmış yordamlara ihtiyacınız varsa veritabanınızın kendi eklentisini kullanınız (örneğin, Oracle için oci8 gibi).

Ayrıca Bakınız

add a note

User Contributed Notes 4 notes

up
13
bslorence
17 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
1
lzsiga at freemail dot c3 dot hu
4 years ago
The resource returned by odbc_prepare can be freed with odbc_free_result.
up
1
Marek
19 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
0
info dot codesquare at gmail dot com
18 days 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);
To Top