PDOStatement::bindColumn

(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.1.0)

PDOStatement::bindColumn Lie une colonne à une variable PHP

Description

public PDOStatement::bindColumn(
    string|int $column,
    mixed &$var,
    int $type = PDO::PARAM_STR,
    int $maxLength = 0,
    mixed $driverOptions = null
): bool

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.

Liste de paramètres

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.

var

Nom de la variable PHP à laquelle la colonne doit être liée.

type

Type du paramètre, spécifié par les constantes PDO::PARAM_*.

maxLength

Une astuce pour la pré-allocation.

driverOptions

Paramètres optionnels pour la bibliothèque.

Valeurs de retour

Cette fonction retourne true en cas de succès ou false si une erreur survient.

Erreurs / Exceptions

Émet une erreur de niveau E_WARNING si l'attribut PDO::ATTR_ERRMODE est défini à PDO::ERRMODE_WARNING.

Lève une exception PDOException si l'attribut PDO::ATTR_ERRMODE est défini à PDO::ERRMODE_EXCEPTION.

Exemples

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
$stmt
= $dbh->prepare('SELECT name, colour, calories FROM fruit');
$stmt->execute();

/* Lie par les numéros de colonnes */
$stmt->bindColumn(1, $name);
$stmt->bindColumn(2, $colour);

/* Lie par les noms de colonnes */
$stmt->bindColumn('calories', $cals);
while (
$stmt->fetch(PDO::FETCH_BOUND)) {
print
$name . "\t" . $colour . "\t" . $cals . "\n";
}
readData($dbh);
?>

Résultat de l'exemple ci-dessus est similaire à :

pomme   rouge     150
banane  jaune  175
kiwi    vert   75
orange  orange  150
mangue   rouge     200
fraise      rouge     25

Voir aussi

add a note

User Contributed Notes 1 note

up
-16
Moses Blumenstiel
3 years ago
I wanted to efficiently bind columns and then put everything into one array.

<?php

$columns
= array(
'DEVICE_CONFIG' => '',
'CONSUMABLE_INFO' => '',
'DEVICE_UNIQUE_ID' => '',
'STATUS' => '',
'STATUS_MESSAGE' => '',
'LAST_MESSAGE_TIME' => '',
'DEVICE_DESCRIPTION' => ''
);

$statement = $this->connection->prepare($sql);

$statement->execute();

$x = 1;
foreach(
$columns as $column => $index){
$
$column = $index;
eval(
'$statement->bindColumn(' . $x++ . ', $' . $column . ');');
}

$output= array();
while(
$statement->fetch(\PDO::FETCH_BOUND)){
$temp = array();
foreach(
$columns as $columnName => $val){
eval(
"\$data = \$$columnName;");
$temp[$columnName] = $data;
}
$output[] = $temp;
}
?>
To Top