(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.1.0)
PDOStatement::bindColumn — Bindet eine Spalte an eine PHP-Variable
$column
,&$var
,$type
= PDO::PARAM_STR,$maxLength
= 0,$driverOptions
= null
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.
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.
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.
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