db2_execute

(PECL ibm_db2 >= 1.0.0)

db2_execute Exécute une requête SQL préparée

Description

bool db2_execute ( resource $stmt [, array $parameters ] )

db2_execute() exécute une requête SQL qui a été préparée par db2_prepare().

Si la requête SQL retourne un jeu de résultats, par exemple, une requête SELECT ou CALL à une procédure d'enregistrement retourne un ou plusieurs jeux de résultats, vous pouvez récupérer une ligne en tant que tableau à partir de la ressource stmt en utilisant db2_fetch_assoc(), db2_fetch_both() ou db2_fetch_array(). Alternativement, vous pouvez utiliser db2_fetch_row() pour déplacer le pointeur à la ligne suivante et récupérer une colonne à la fois de cette ligne avec la fonction db2_result().

Référez-vous à db2_prepare() pour une brève discussion sur les avantages de l'utilisation de db2_prepare() et db2_execute() plutôt que db2_exec().

Liste de paramètres

stmt

Une requête préparée retournée par db2_prepare().

parameters

Un tableau des paramètres d'entrée qui contient les marqueurs de variables contenus dans la requête préparée.

Valeurs de retour

Cette fonction retourne TRUE en cas de succès ou FALSE si une erreur survient.

Exemples

Exemple #1 Préparation et exécution d'une requête SQL avec des marqueurs

<?php
$pet = array(0, 'chat', 'Pook', 3.2);

$insert = 'INSERT INTO animaux (id, race, nom, poids)
	VALUES (?, ?, ?, ?)';

$stmt = db2_prepare($conn, $insert);
if ($stmt) {
	$result = db2_execute($stmt, $pet);
	if ($result) {
		print "Ajout d'un nouvel animal réussi.";
	}
}
?>
<?php
$num_pets = 0;
$res = db2_prepare($conn, "CALL count_my_pets(?)");
$rc = db2_bind_param($res, 1, "num_pets", DB2_PARAM_OUT);
$rc = db2_execute($res);
print "Je possède $num_pets animaux !";
?>
<?php

$conn = db2_connect("SAMPLE", "db2inst1", "ibmdb2");

$query = 'SELECT * FROM XMLTABLE(
	XMLNAMESPACES (DEFAULT \'http://posample.org\'),
	\'db2-fn:xmlcolumn("CUSTOMER.INFO")/customerinfo\'
	COLUMNS
	"CID" VARCHAR (50) PATH \'@Cid\',
	"NAME" VARCHAR (50) PATH \'name\',
	"PHONE" VARCHAR (50) PATH \'phone [ @type = "work"]\'
	) AS T
	WHERE NAME = ?
	';

$stmt = db2_prepare($conn, $query);

$name = 'Kathy Smith';

if ($stmt) {
	db2_bind_param($stmt, 1, "name", DB2_PARAM_IN);
	db2_execute($stmt);

	while($row = db2_fetch_object($stmt)){
		printf("$row->CID	 $row->NAME	 $row->PHONE\n");
	}
}
db2_close($conn);

?>
<?php

$conn = db2_connect("SAMPLE", "db2inst1", "ibmdb2");

$query = '
SELECT A.CID, A.NAME, A.PHONE, C.PONUM, C.STATUS
FROM
XMLTABLE(
XMLNAMESPACES (DEFAULT \'http://posample.org\'),
\'db2-fn:xmlcolumn("CUSTOMER.INFO")/customerinfo\'
COLUMNS
"CID" BIGINT PATH \'@Cid\',
"NAME" VARCHAR (50) PATH \'name\',
"PHONE" VARCHAR (50) PATH \'phone [ @type = "work"]\'
) as A,
PURCHASEORDER AS B,
XMLTABLE (
XMLNAMESPACES (DEFAULT \'http://posample.org\'),
\'db2-fn:xmlcolumn("PURCHASEORDER.PORDER")/PurchaseOrder\'
COLUMNS
"PONUM"  BIGINT PATH \'@PoNum\',
"STATUS" VARCHAR (50) PATH \'@Status\'
) as C
WHERE A.CID = B.CUSTID AND
		B.POID = C.PONUM AND
		A.NAME = ?
';

$stmt = db2_prepare($conn, $query);

$name = 'Kathy Smith';

if ($stmt) {
	db2_bind_param($stmt, 1, "name", DB2_PARAM_IN);
	db2_execute($stmt);

	while($row = db2_fetch_object($stmt)){
		printf("$row->CID	 $row->NAME	 $row->PHONE	 $row->PONUM	 $row->STATUS\n");
	}
}

db2_close($conn);

?>
<?php

$conn = db2_connect("SAMPLE", "db2inst1", "ibmdb2");

$query = '
SELECT
XMLSERIALIZE(
XMLQUERY(\'
	declare boundary-space strip;
	declare default element namespace "http://posample.org";
	<promoList> {
		for $prod in $doc/product
		where $prod/description/price < 10.00
		order by $prod/description/price ascending
		return(
			<promoitem> {
				$prod,
				<startdate> {$start} </startdate>,
				<enddate> {$end} </enddate>,
				<promoprice> {$promo} </promoprice>
			} </promoitem>
		)
	} </promoList>
\' passing by ref DESCRIPTION AS "doc",
PROMOSTART as "start",
PROMOEND as "end",
PROMOPRICE as "promo"
RETURNING SEQUENCE)
AS CLOB (32000))
AS NEW_PRODUCT_INFO
FROM PRODUCT
WHERE PID = ?
';

$stmt = db2_prepare($conn, $query);

$pid = "100-100-01";

if ($stmt) {
	db2_bind_param($stmt, 1, "pid", DB2_PARAM_IN);
	db2_execute($stmt);

	while($row = db2_fetch_array($stmt)){
		printf("$row[0]\n");
	}
}

db2_close($conn);

?>

L'exemple ci-dessus va afficher :

<promoList xmlns="http://posample.org">
    <promoitem>
    <product pid="100-100-01">
        <description>
            <name>Snow Shovel, Basic 22 inch</name>
            <details>Basic Snow Shovel, 22 inches wide, straight handle with D-Grip</details>
            <price>9.99</price>
            <weight>1 kg</weight>
        </description>
    </product>
    <startdate>2004-11-19</startdate>
    <enddate>2004-12-19</enddate>
    <promoprice>7.25</promoprice>
    </promoitem>
</promoList>

Voir aussi

  • db2_exec() - Exécute une requête SQL directement
  • db2_fetch_array() - Retourne un tableau, indexé par la position des colonnes, représentant une ligne du jeu de résultats
  • db2_fetch_assoc() - Retourne un tableau, indexé par nom de colonne, représentant une ligne du jeu de résultats
  • db2_fetch_both() - Retourne un tableau, indexé par nom de colonne et position, représentant une ligne du jeu de résultats
  • db2_fetch_row() - Modifie le pointeur du jeu de résultat à la prochaine ligne ou à la ligne demandée
  • db2_prepare() - Prépare une requête SQL à être exécutée
  • db2_result() - Retourne une colonne d'une ligne d'un jeu de résultats

LoadingChargement en cours