(PHP 5 >= 5.1.0, PHP 7, PECL pdo >= 0.1.0)
PDOStatement::bindColumn — Lie une colonne à une variable PHP
$column
, mixed &$param
[, int $type
[, int $maxlen
[, mixed $driverdata
]]] )PDOStatement::bindColumn() fait en sorte qu'une variable PHP soit liée à une colonne données dans le jeu de résultats dans une requête. Chaque appel à la fonction PDOStatement::fetch() ou PDOStatement::fetchAll() met à jour toutes les variables qui sont liées aux colonnes.
Note:
Étant donné que les informations sur les colonnes ne sont pas toujours disponibles à PDO tant que la requête n'est pas exécutée, les applications portables doivent appeler cette fonction après la fonction PDOStatement::execute().
Cependant, pour pouvoir lier une colonne de type LOB avec un flux lors de l'utilisation du pilote PostGreSQL, les applications doivent appeler cette méthode avant d'appeler PDOStatement::execute(), sous peine de recevoir l'objet OID sous forme d'entier.
column
Numéro de la colonne (en commençant à 1) ou nom de la colonne dans le jeu de résultats. Si vous utilisez les noms de colonnes, assurez-vous que le nom corresponde à la casse de la colonne, comme retourné par le pilote.
param
Nom de la variable PHP à laquelle la colonne doit être liée.
type
Type du paramètre, spécifié par les constantes PDO::PARAM_* constants.
maxlen
Une astuce pour la pré-allocation.
driverdata
Paramètres optionnels pour la bibliothèque.
Cette fonction retourne TRUE
en cas de
succès ou FALSE
si une erreur survient.
Exemple #1 Lie l'affichage du jeu de résultats à des variables PHP
Lie les colonnes du jeu de résultats aux variables PHP est une façon agréable de rendre les données contenues dans chaque ligne immédiatement disponible à votre application. L'exemple suivant montre comment PDO vous autorise à lier et récupérer les colonnes avec une variété d'options.
<?php
function readData($dbh) {
$sql = 'SELECT nom, couleur, calories FROM fruit';
try {
$stmt = $dbh->prepare($sql);
$stmt->execute();
/* Lie par les numéros de colonnes */
$stmt->bindColumn(1, $nom);
$stmt->bindColumn(2, $couleur);
/* Lie par les noms de colonnes */
$stmt->bindColumn('calories', $cals);
while ($row = $stmt->fetch(PDO::FETCH_BOUND)) {
$data = $nom . "\t" . $couleur . "\t" . $cals . "\n";
print $data;
}
}
catch (PDOException $e) {
print $e->getMessage();
}
}
readData($dbh);
?>
L'exemple ci-dessus va afficher :
pomme rouge 150 banane jaune 175 kiwi vert 75 orange orange 150 mangue rouge 200 fraise rouge 25