db2_exec (no version information, might be only in CVS) db2_exec --
Exécute une requête SQL directement
Descriptionresource db2_exec ( resource connection, string statement [, array options] )
Prépare et exécute une requête SQL.
Si vous prévoyez intercaler des variables PHP dans la requête SQL, vous
devez comprendre que c'est l'une des plus communes failles de sécurité.
Considérez qu'il faut appeler la fonction db2_prepare()
pour préparer une requête SQL qui contient des marqueurs pour des variables d'entrée.
Ensuite, vous pouvez appeler la fonction db2_execute()
pour passer les valeurs d'entrée et ainsi éviter les attaques par
injections SQL.
Si vous prévoyez appeler à plusieurs reprises la même requête SQL avec des
paramètres différents, considérez qu'il est préférable d'appeler la
fonction db2_prepare() et
db2_execute() pour permettre au serveur de base de
données de réutiliser son plan d'accès et ainsi augmenter l'efficacité de
votre accès à la base de données.
Liste de paramètres
- connection
Une variable ressource de connexion valide retournée par
db2_connect() ou db2_pconnect().
- statement
Une requête SQL. La requête ne peut contenir de marqueur.
- options
Un tableau associatif contenant les options de la requête. Vous pouvez
utiliser ce paramètre pour demander un curseur flottant sur les
serveurs de base de données qui supportent cette fonctionnalité.
- cursor
La valeur DB2_FORWARD_ONLY demande un curseur
d'avancement seul pour cette requête SQL. Cette valeur est le
type par défaut pour un curseur et est supportée par tous les
serveurs de base de données. C'est aussi beaucoup plus rapide qu'un
curseur flottant.
La valeur DB2_SCROLLABLE demande un curseur
flottant pour cette requête SQL. Ce type de curseur permet de
récupérer les lignes de manière non séquentielle du serveur de base
de données. Cependant, cela est supporté que par les serveurs DB2
et est beaucoup plus lent que les curseurs d'avancement seul.
Valeurs de retour
Retourne une variable ressource si la requête SQL était envoyée
correctement ou FALSE si la base de données n'a pas réussi à exécuter la
requête SQL.
Exemples
Exemple 1. Création d'une table avec db2_exec()
L'exemple suivant utilise la fonction db2_exec() pour
envoyer un ensemble de requêtes DDL afin de créer une table.
<?php $conn = db2_connect($database, $user, $password);
// Create the test table $create = 'CREATE TABLE animaux (id INTEGER, race VARCHAR(32), nom CHAR(16), poids DECIMAL(7,2))'; $result = db2_exec($conn, $create); if ($result) { print "La table a été créée correctement.\n"; }
// Remplie la table de test $animaux = array( array(0, 'chat', 'Pook', 3.2), array(1, 'chien', 'Peaches', 12.3), array(2, 'cheval', 'Smarty', 350.0), array(3, 'cyprin doré', 'Bubbles', 0.1), array(4, 'perruche', 'Gizmo', 0.2), array(5, 'chèvre', 'Rickety Ride', 9.7), array(6, 'lama', 'Sweater', 150) );
foreach ($animaux as $animal) { $rc = db2_exec($conn, "INSERT INTO animaux (id, race, nom, poids) VALUES ('{$animal[0]}', '{$animal[1]}', '{$animal[2]}', {$animal[3]})"); if ($rc) { print "Insertion... "; } } ?>
|
L'exemple ci-dessus va afficher : La table a été créée correctement.
Insertion... Insertion... Insertion... Insertion... Insertion... Insertion... Insertion... |
|
Exemple 2. Exécution d'une requête SELECT avec un curseur flottant
L'exemple suivant montre comment demander un curseur flottant pour une
requête SQL envoyée avec la fonction db2_exec().
<?php $conn = db2_connect($database, $user, $password); $sql = "SELECT nom FROM animaux WHERE poids < 10.0 ORDER BY nom"; if ($conn) { require_once('prepare.inc'); $stmt = db2_exec($conn, $sql, array('cursor' => DB2_SCROLLABLE)); while ($row = db2_fetch_array($stmt)) { print "$row[0]\n"; } } ?>
|
L'exemple ci-dessus va afficher : Bubbles
Gizmo
Pook
Rickety Ride |
|
|