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
}
?>odbc_prepare
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
odbc_prepare
Референца за `function.odbc-prepare.php` со подобрена типографија и навигација.
odbc_prepare
(PHP 4, PHP 5, PHP 7, PHP 8)
odbc_prepare — Подготвува изјава за извршување
= NULL
Подготвува изјава за извршување. ODBC резултат објектот може да се користи подоцна за извршување на изјавата со odbc_execute().
Некои бази на податоци (како IBM DB2, MS SQL Server и Oracle) поддржуваат процедури што прифаќаат параметри од тип IN, INOUT и OUT како што се дефинирани со ODBC спецификацијата. Сепак, унифицираниот ODBC драјвер моментално поддржува само параметри од тип IN до процедури.
Параметри
odbc-
Испраќа SQL изјава до серверот за бази на податоци. odbc_connect() интерполација на низи
query-
Изјавата за низата за прашање што се подготвува.
Вратени вредности
Враќа ODBC резултат објект ако SQL командата беше успешно подготвена. Враќа false при грешка.
Дневник на промени
| Верзија | = NULL |
|---|---|
| 8.4.0 |
odbc очекува Odbc\Connection
инстанца сега; претходно, а resource се очекуваше.
|
| 8.4.0 | Враќа нов Odbc\Result инстанца сега; претходно, а resource . |
Примери
Пример #1 odbc_execute() and odbc_prepare() example
Во следниот код, $success ќе биде само
true ако сите три параметри на myproc се IN параметри:
<?php
$a = 1;
$b = 2;
$c = 3;
$stmt = odbc_prepare($conn, 'CALL myproc(?,?,?)');
$success = odbc_execute($stmt, array($a, $b, $c));
?>Ако треба да повикате процедура со INOUT или OUT параметри, препорачаниот компромис е да користите нативна екстензија за вашата база на податоци (на пример, oci8 за Oracle).
Белешки од корисници 4 белешки
The resource returned by odbc_prepare can be freed with odbc_free_result.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);