odbc_prepare

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

odbc_preparePrepara una orden para su ejecución

Descripción

odbc_prepare(Odbc\Connection $odbc, string $query): Odbc\Result|false

Prepara una orden para su ejecución. The ODBC result object puede ser utilizado más tarde para ejecutar la orden con odbc_execute().

Algunas bases de datos (como IBM DB2, MS SQL Server y Oracle) soportan los procedimientos almacenados que aceptan los tipos de parámetros IN, INOUT y OUT como se definen en las especificaciones ODBC. Sin embargo, el driver unificado ODBC soporta actualmente únicamente el tipo de parámetros IN para los procedimientos almacenados.

Parámetros

odbc

El conector identificador ODBC, ver odbc_connect() para más información.

query

La consulta a preparar.

Valores devueltos

Returns an ODBC result object si la orden SQL ha sido preparada con éxito. Retorna false si ocurre un error.

Historial de cambios

Versión Descripción
8.4.0 odbc expects an Odbc\Connection instance now; previously, a resource was expected.
8.4.0 This function returns an Odbc\Result instance now; previously, a resource was returned.

Ejemplos

Ejemplo #1 Ejemplo con odbc_prepare() y odbc_execute()

En el código siguiente, $res solo será válido si los tres parámetros para myproc son parámetros IN:

<?php
$a
= 1;
$b = 2;
$c = 3;
$stmt = odbc_prepare($conn, 'CALL myproc(?,?,?)');
$res = odbc_execute($stmt, array($a, $b, $c));
?>

Si necesita llamar a un procedimiento almacenado que utilice parámetros INOUT o OUT, se recomienda utilizar la extensión nativa de su base de datos (por ejemplo oci8 para Oracle).

Ver también

add a note

User Contributed Notes 4 notes

up
13
bslorence
18 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
6 years ago
The resource returned by odbc_prepare can be freed with odbc_free_result.
up
1
info dot codesquare at gmail dot com
1 year 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);
up
1
Marek
20 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));
To Top