PHP 8.4.2 Released!

odbc_prepare

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

odbc_preparePrépare une commande pour l'exécution

Description

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

Prépare une commande pour l'exécution. L’objet de résultat ODBC peut être utilisé plus tard pour exécuter la commande avec odbc_execute().

Quelques bases de données (comme IBM DB2, MS SQL Server et Oracle) supportent les procédures stockées qui acceptent les types de paramètres IN, INOUT et OUT comme définis dans les spécifications ODBC. Cependant, le driver unifié ODBC supporte actuellement uniquement le type de paramètres IN pour les procédures stockées.

Liste de paramètres

odbc

L'objet de connexion ODBC, voir la documentation de la fonction odbc_connect() pour plus de détails.

query

La requête à préparer.

Valeurs de retour

Renvoie un objet de résultat ODBC si la commande SQL a été préparée avec succès. Retourne false si une erreur survient.

Historique

Version Description
8.4.0 odbc attend désormais une instance de Odbc\Connection; auparavant, un resource était attendu.
8.4.0 Cette fonction retourne désormais une instance de Odbc\Result; auparavant, un resource était retourné.

Exemples

Exemple #1 Exemple avec odbc_prepare() et odbc_execute()

Dans le code suivant, $res ne sera valide uniquement si les trois paramètres pour myproc sont des paramètres IN :

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

Si vous devez appeler une procédure stockée utilisant des paramètres INOUT ou OUT, il est recommandé d'utiliser l'extension native de votre base de données (par exemple oci8 pour Oracle).

Voir aussi

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
5 years ago
The resource returned by odbc_prepare can be freed with odbc_free_result.
up
1
info dot codesquare at gmail dot com
10 months 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