Signatur
Beschreibung
db2_field_type() ermittelt den SQL-Datentyp einer bestimmten Spalte in einem Ergebnisset, das durch ein vorbereitetes oder ausgeführtes Statement-Handle repräsentiert wird. Der Rückgabewert ist ein String wie 'INTEGER', 'VARCHAR', 'DECIMAL' oder 'TIMESTAMP', der dem Datenbanktyp der jeweiligen Spalte entspricht.
Die Funktion ist besonders nützlich, wenn dynamisch auf Abfrageergebnisse reagiert werden soll, ohne die Tabellenstruktur vorab zu kennen – etwa beim Aufbau generischer Datenexport-Werkzeuge, bei der automatischen Typkonvertierung oder bei der Generierung von Metadaten-Beschreibungen einer Abfrage.
Der Parameter column kann entweder als nullbasierter Integer-Index (0 für die erste Spalte) oder als String mit dem exakten Spaltennamen übergeben werden. Die Funktion arbeitet mit IBM DB2, Cloudscape und Apache Derby zusammen und erfordert die ibm_db2-Erweiterung.
Im Fehlerfall – etwa wenn das Statement-Handle ungültig ist oder die angegebene Spalte nicht existiert – gibt die Funktion false zurück.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $stmt Pflicht | resource | Ein gültiges Statement-Handle, das von db2_exec(), db2_execute() oder db2_prepare() zurückgegeben wurde. |
|
| $column Pflicht | int|string | Die Spalte, deren Datentyp ermittelt werden soll. Entweder als nullbasierter Integer-Index (0 für die erste Spalte) oder als String mit dem Spaltennamen. |
Rückgabewert
'INTEGER', 'VARCHAR', 'DATE'). Gibt false zurück, wenn das Statement-Handle ungültig ist oder die angegebene Spalte nicht gefunden wurde.Beispiele
Datentypen aller Spalten einer Abfrage ausgeben
<?php
$conn = db2_connect('SAMPLE', 'db2inst1', 'geheim');
if ($conn) {
$sql = 'SELECT id, name, geburtsdatum, gehalt FROM mitarbeiter';
$stmt = db2_exec($conn, $sql);
if ($stmt) {
$spaltenanzahl = db2_num_fields($stmt);
for ($i = 0; $i < $spaltenanzahl; $i++) {
$name = db2_field_name($stmt, $i);
$typ = db2_field_type($stmt, $i);
echo "Spalte $i: $name → Typ: $typ\n";
}
}
db2_close($conn);
}
Datentyp einer bestimmten Spalte per Spaltenname abfragen
<?php
$conn = db2_connect('SAMPLE', 'db2inst1', 'geheim');
if ($conn) {
$stmt = db2_exec($conn, 'SELECT preis FROM produkte');
if ($stmt) {
$typ = db2_field_type($stmt, 'PREIS');
if ($typ !== false) {
echo "Der Datentyp der Spalte PREIS ist: " . $typ . "\n";
} else {
echo "Spalte nicht gefunden oder ungültiges Statement.\n";
}
}
db2_close($conn);
}
// Wichtig · Fallstricke
Hinweis zur Spaltenindizierung: Der Integer-Index ist nullbasiert – die erste Spalte hat den Index 0. Ein häufiger Fehler ist die Verwendung von 1 als erstem Index, was zu false als Rückgabewert führt.
Groß-/Kleinschreibung bei Spaltennamen: Beim Zugriff per Spaltenname ist die Groß- und Kleinschreibung abhängig von der Datenbankkonfiguration. In vielen DB2-Installationen werden Spaltennamen intern in Großbuchstaben gespeichert, daher empfiehlt es sich, den Spaltennamen in Großbuchstaben zu übergeben.
Erweiterungsabhängigkeit: Diese Funktion ist nur verfügbar, wenn die PHP-Erweiterung ibm_db2 installiert und aktiviert ist. Sie ist nicht Bestandteil des PHP-Kerns.