Signatur
Beschreibung
odbc_gettypeinfo() fragt die ODBC-Datenquelle nach Metainformationen zu den unterstützten SQL-Datentypen ab. Das zurückgegebene Ergebnishandle kann anschließend mit Funktionen wie odbc_fetch_row() oder odbc_result() ausgelesen werden, um detaillierte Informationen zu jedem unterstützten Typ zu erhalten.
Die Funktion ist nützlich, wenn Anwendungen datenbankagnostisch entwickelt werden sollen und zur Laufzeit ermittelt werden muss, welche Datentypen die verbundene Datenquelle kennt und wie deren Eigenschaften aussehen (z. B. maximale Länge, Nullbarkeit, Groß-/Kleinschreibungsunterscheidung).
Das Ergebnis enthält standardisierte Spalten gemäß der ODBC-Spezifikation, darunter TYPE_NAME, DATA_TYPE, COLUMN_SIZE, LITERAL_PREFIX, LITERAL_SUFFIX, CREATE_PARAMS, NULLABLE, CASE_SENSITIVE, SEARCHABLE und weitere.
Wird der Parameter data_type auf einen bestimmten ODBC-Typcode gesetzt (z. B. SQL_CHAR), werden nur Informationen zu diesem spezifischen Typ zurückgegeben. Mit dem Standardwert 0 (entspricht SQL_ALL_TYPES) werden alle verfügbaren Typen abgerufen.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $odbc Pflicht | resource | Eine gültige ODBC-Verbindungsressource, wie sie von odbc_connect() oder odbc_pconnect() zurückgegeben wird. |
|
| $data_type | int | 0 | Der ODBC-Datentypcode, für den Informationen abgerufen werden sollen. Der Standardwert 0 steht für SQL_ALL_TYPES und liefert Informationen zu allen unterstützten Datentypen. |
Rückgabewert
odbc_fetch_row(), odbc_result() und ähnlichen Funktionen ausgelesen werden kann. Bei einem Fehler wird false zurückgegeben.Beispiele
Alle unterstützten Datentypen einer Datenquelle auflisten
<?php
$conn = odbc_connect('MeineDSN', 'benutzer', 'passwort');
if (!$conn) {
die('Verbindung fehlgeschlagen');
}
$result = odbc_gettypeinfo($conn);
if ($result === false) {
die('Fehler beim Abrufen der Typinformationen');
}
while (odbc_fetch_row($result)) {
$typName = odbc_result($result, 'TYPE_NAME');
$dataType = odbc_result($result, 'DATA_TYPE');
$colSize = odbc_result($result, 'COLUMN_SIZE');
$nullable = odbc_result($result, 'NULLABLE');
echo "Typ: $typName | ODBC-Code: $dataType | Max. Größe: $colSize | Nullable: $nullable\n";
}
odbc_free_result($result);
odbc_close($conn);
Informationen nur zu einem bestimmten Datentyp abrufen
<?php
// SQL_CHAR hat den ODBC-Typcode 1
define('SQL_CHAR', 1);
$conn = odbc_connect('MeineDSN', 'benutzer', 'passwort');
if (!$conn) {
die('Verbindung fehlgeschlagen');
}
$result = odbc_gettypeinfo($conn, SQL_CHAR);
if ($result === false) {
die('Fehler beim Abrufen der Typinformationen');
}
if (odbc_fetch_row($result)) {
echo 'Typname: ' . odbc_result($result, 'TYPE_NAME') . "\n";
echo 'Spaltengröße: ' . odbc_result($result, 'COLUMN_SIZE') . "\n";
echo 'Prefix: ' . odbc_result($result, 'LITERAL_PREFIX') . "\n";
echo 'Suffix: ' . odbc_result($result, 'LITERAL_SUFFIX') . "\n";
}
odbc_free_result($result);
odbc_close($conn);
// Wichtig · Fallstricke
Ressourcen freigeben: Nach der Verwendung des Ergebnisses sollte die Ressource mit odbc_free_result() freigegeben werden, um Speicher zu sparen.
Treiberspezifisches Verhalten: Die zurückgegebenen Typinformationen und deren Vollständigkeit hängen stark vom verwendeten ODBC-Treiber und der Datenquelle ab. Nicht alle Treiber liefern alle standardisierten Spalten korrekt oder vollständig.
PHP 8.0+: Ab PHP 8.0 wird der erste Parameter als \ODBC\Connection-Objekt übergeben, nicht mehr als resource. Der Rückgabewert ist entsprechend ein \ODBC\Result-Objekt statt einer Ressource.