PDOStatement::bindColumn

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

PDOStatement::bindColumnBindet eine Spalte an eine PHP-Variable

Beschreibung

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

PDOStatement::bindColumn() bindet die angegebene Variable an die angegebene Spalte der Ergebnismenge einer Abfrage. Jedes Mal, wenn PDOStatement::fetch() oder PDOStatement::fetchAll() aufgerufen wird, werden alle an Spalten gebundenen Variablen aktualisiert.

Hinweis:

Da Informationen über die Spalten für PDO erst verfügbar sind, nachdem die Anweisung ausgeführt wurde, sollte diese Funktion in portablen Anwendungen nach PDOStatement::execute() aufgerufen werden.

Um jedoch bei Verwendung des PgSQL-Treibers eine Spalte vom Typ LOB mit einem Stream verknüpfen zu können, muss diese Methode vor PDOStatement::execute() aufgerufen werden, weil die Anwendung das OID-Objekt ansonsten als Integer erhält.

Parameter-Liste

column

Die Spaltennummer (beginnend mit 1) oder der Spaltenname in der Ergebnismenge. Wird der Spaltenname verwendet, ist zu beachten, dass der Name mit der vom Treiber zurückgegebenen Groß-/Kleinschreibung der Spalte übereinstimmen muss.

var

Der Name der PHP-Variable, an die die Spalte gebunden werden soll.

type

Der Datentyp des Parameters, angegeben durch eine der PDO::PARAM_*-Konstanten.

maxLength

Ein Hinweis, um Speicherplatz vorab zuzuweisen.

driverOptions

Optionale Parameter für den Treiber.

Rückgabewerte

Gibt bei Erfolg true zurück. Bei einem Fehler wird false zurückgegeben.

Fehler/Exceptions

Gibt einen Fehler der Stufe E_WARNING aus, wenn das Attribut PDO::ATTR_ERRMODE auf PDO::ERRMODE_WARNING gesetzt ist.

Löst eine PDOException aus, wenn das Attribut PDO::ATTR_ERRMODE auf PDO::ERRMODE_EXCEPTION gesetzt ist.

Beispiele

Beispiel #1 Binden der Ergebnismenge an PHP-Variablen

Die Spalten einer Ergebnismenge an PHP-Variablen zu binden, ist eine effektive Methode, um die in jeder Zeile enthaltenen Daten sofort für eine Anwendung verfügbar zu machen. Im folgenden Beispiel wird gezeigt, wie Spalten mittels PDO mit einer ganzen Reihe von Optionen und sinnvollen Voreinstellungen gebunden und abgerufen werden können.

<?php
$stmt
= $dbh->prepare('SELECT name, colour, calories FROM fruit');
$stmt->execute();

/* Binden anhand der Spaltennummer */
$stmt->bindColumn(1, $name);
$stmt->bindColumn(2, $colour);

/* Binden anhand des Spaltennamens */
$stmt->bindColumn('calories', $cals);

while (
$stmt->fetch(PDO::FETCH_BOUND)) {
print
$name . "\t" . $colour . "\t" . $cals . "\n";
}

Das oben gezeigte Beispiel erzeugt eine ähnliche Ausgabe wie:

apple   red     150
banana  yellow  175
kiwi    green   75
orange  orange  150
mango   red     200
strawberry      red     25

Siehe auch

add a note add a note

User Contributed Notes 1 note

up
0
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