db2_bind_param
(PECL ibm_db2 >= 1.0.0)
db2_bind_param — Associe une variable PHP à un paramètre d'une requête SQL
Description
$stmt
, int $parameter_number
, string $variable_name
[, int $parameter_type
[, int $data_type
= 0
[, int $precision
= -1
[, int $scale
= 0
]]]] ) : boolAssocie une variable PHP à un paramètre dans la requête SQL retournée par db2_prepare(). Cette fonction vous donne plus de contrôle sur les types des paramètres, les types des données, la précision, et l'échelle pour le paramètre qu'en lui passant simplement une variable à l'intérieur du tableau d'entrée optionnel de la fonction db2_execute().
Liste de paramètres
-
stmt
-
Une requête préparée retournée par db2_prepare().
-
parameter_number
-
Spécifie la position du paramètre commençant à l'indice 1 dans la requête préparée.
-
variable_name
-
Une chaîne spécifiant le nom de la variable PHP à associer au paramètre spécifié par
parameter_number
. -
parameter_type
-
Une constante spécifiant si la variable PHP devrait être associé au paramètre SQL en tant que paramètre entrant (DB2_PARAM_IN), que paramètre sortant (DB2_PARAM_OUT) ou en tant que paramètre qui accepte les entrées et les sorties (DB2_PARAM_INOUT). Pour éviter une surconsommation de la mémoire, vous pouvez aussi spécifier DB2_PARAM_FILE pour attacher la variable PHP au nom du fichier qui contient les données de l'objet large (BLOB, CLOB ou DBCLOB).
-
data_type
-
Une constante spécifiant le type de données SQL que la variable PHP devrait être associée. Le paramètre doit prendre une des valeurs suivantes : DB2_BINARY, DB2_CHAR, DB2_DOUBLE ou DB2_LONG.
-
precision
-
Spécifie la précision à laquelle la variable devrait être associée à la base de données. Ce paramètre peut également être utilisé pour récupérer des valeurs de sortie XML pour les procédures stockées. Une valeur non-négative spécifie la taille maximale des données XML qui seront récupérées depuis la base de données. Si ce paramètre n'est pas utilisé, une taille par défaut de 1 Mo sera définie pour récupérer les valeurs de sorte XML depuis la procédure stockée.
-
scale
-
Spécifie l'échelle à laquelle la variable devrait être associée à la base de données.
Exemples
Exemple #1 Association de variables PHP à une requête préparée
La requête SQL dans l'exemple suivant utilise deux paramètres d'entrée dans la section WHERE. Nous appelons db2_bind_param() pour associer deux variables qui n'ont pas été déclarées ou assignées avant l'appel de db2_bind_param(); dans cet exemple, $lower_limit est assignée avant d'être appelée à db2_bind_param(), mais $upper_limit est assignée après l'appel de db2_bind_param(). Les variables doivent être associées et, pour les paramètres qui acceptent les entrées, nous devons leur assigner une valeur avant d'appeler db2_execute().
<?php
$sql = 'SELECT nom, race, poids FROM animaux
WHERE poids > ? AND poids < ?';
$conn = db2_connect($database, $user, $password);
$stmt = db2_prepare($conn, $sql);
// Nous pouvons déclarer la variable avant d'appeler db2_bind_param()
$lower_limit = 1;
db2_bind_param($stmt, 1, "lower_limit", DB2_PARAM_IN);
db2_bind_param($stmt, 2, "upper_limit", DB2_PARAM_IN);
// Nous pouvons aussi déclarer la variable après l'appel de db2_bind_param()
$upper_limit = 15.0;
if (db2_execute($stmt)) {
while ($row = db2_fetch_array($stmt)) {
print "{$row[0]}, {$row[1]}, {$row[2]}\n";
}
}
?>
L'exemple ci-dessus va afficher :
Pook, chat, 3.2 Rickety Ride, chèvre, 9.7 Peaches, chien, 12.3
Exemple #2 Appel de procédures d'enregistrement avec les paramètres IN et OUT
La procédure d'enregistrement concorde_animal dans l'exemple suivant accepte trois différents paramètres :
-
un paramètre d'entré (IN) qui accepte le nom du premier animal en entré
-
un paramètre d'entrée-sortie (INOUT) qui accepte le nom du second animal en entré et retourne une chaîne de caractères TRUE si un animal dans la base de données correspond à ce nom
-
un paramètre de sortie (OUT) qui retourne la somme des poids des deux animaux identifiés
<?php
$sql = 'CALL concorde_animal(?, ?, ?)';
$conn = db2_connect($database, $user, $password);
$stmt = db2_prepare($conn, $sql);
$nom = "Peaches";
$second_nom = "Rickety Ride";
$poids = 0;
db2_bind_param($stmt, 1, "nom", DB2_PARAM_IN);
db2_bind_param($stmt, 2, "second_nom", DB2_PARAM_INOUT);
db2_bind_param($stmt, 3, "poids", DB2_PARAM_OUT);
print "Valeurs des paramètres _avant_ CALL :\n";
print " 1: {$nom} 2: {$second_nom} 3: {$poids}\n\n";
if (db2_execute($stmt)) {
print "Valeurs des paramètres _après_ CALL :\n";
print " 1: {$nom} 2: {$second_nom} 3: {$poids}\n\n";
print "Résultats :\n";
while ($row = db2_fetch_array($stmt)) {
print " {$row[0]}, {$row[1]}, {$row[2]}\n";
}
}
?>
L'exemple ci-dessus va afficher :
Valeurs des paramètres _avant_ CALL : 1: Peaches 2: Rickety Ride 3: 0 Valeurs des paramètres _après_ CALL : 1: Peaches 2: TRUE 3: 22 Résultats : Peaches, chien, 12.3 Pook, chat, 3.2 Rickety Ride, chèvre, 9.7
Exemple #3 Insertion d'un objet large binaire (BLOB) provenant directement d'un fichier
Les données pour les objets larges sont normalement enregistrées dans des fichiers, comme des documents XML ou des fichiers audio. Plutôt que de lire le fichier en entier dans une variable de PHP et ensuite associer la variable PHP dans la requête SQL, vous pouvez éviter certain surdébit de mémoire en associant le fichier directement au paramètre d'entrée de votre requête SQL. L'exemple suivant démontre comment associer un fichier directement dans une colonne BLOB.
<?php
$stmt = db2_prepare($conn, "INSERT INTO animal_pictures(photo) VALUES (?)");
$picture = "/opt/albums/spook/grooming.jpg";
$rc = db2_bind_param($stmt, 1, "picture", DB2_PARAM_FILE);
$rc = db2_execute($stmt);
?>
Voir aussi
- db2_execute() - Exécute une requête SQL préparée
- db2_prepare() - Prépare une requête SQL à être exécutée
Version en cache
25/12/2024 06:14:08 Cette version de la page est en cache (à la date du 25/12/2024 06:14:08) afin d'accélérer le traitement. Vous pouvez activer le mode utilisateur dans le menu en haut pour afficher la dernère version de la page.Document créé le 30/01/2003, dernière modification le 26/10/2018
Source du document imprimé : https://www.gaudry.be/php-rf-db2-bind-param.html
L'infobrol est un site personnel dont le contenu n'engage que moi. Le texte est mis à disposition sous licence CreativeCommons(BY-NC-SA). Plus d'info sur les conditions d'utilisation et sur l'auteur.
Références
Ces références et liens indiquent des documents consultés lors de la rédaction de cette page, ou qui peuvent apporter un complément d'information, mais les auteurs de ces sources ne peuvent être tenus responsables du contenu de cette page.
L'auteur de ce site est seul responsable de la manière dont sont présentés ici les différents concepts, et des libertés qui sont prises avec les ouvrages de référence. N'oubliez pas que vous devez croiser les informations de sources multiples afin de diminuer les risques d'erreurs.