Thank you Angelo for point out the code. Though the function doesn't really do what it is supposed to. It returns the entire list of ODBC DSNs.
If you really are looking to get the server type based on just the ODBC, username and password in an environment where the application needs to be aware of different types of databases, use the following code:
$link2 = odbc_connect($dsn , $DBUser, $DBPwd ) or die(odbc_errormsg() );
$result = @odbc_data_source( $link2, SQL_FETCH_FIRST );
while($result)
{
if (strtolower($dsn) == strtolower($result['server'])) {
echo $result['description'] . "<br>\n";
break;
}
else
$result = @odbc_data_source( $link2, SQL_FETCH_NEXT );
}
odbc_close($link2);
// Hope it saves your precious time
odbc_data_source
(PHP 4 >= 4.3.0, PHP 5)
odbc_data_source — 現在の接続についての情報を返す
説明
array odbc_data_source
( resource
$connection_id
, int $fetch_type
)この関数は、有効な DSN(複数回のコールの後)のリストを返します。
パラメータ
-
connection_id -
ODBC 接続 ID。詳細は odbc_connect() を参照ください。
-
fetch_type -
fetch_typeは次のふたつの定数SQL_FETCH_FIRST,SQL_FETCH_NEXTのうちのどちらかです。 この関数を最初にコールする際にはSQL_FETCH_FIRSTを、それ以降はSQL_FETCH_NEXTを使用します。
返り値
エラー時には FALSE、成功時には配列を返します。
critmas at hotmail dot com ¶
8 years ago
angelo [at] spaceblue [dot] com ¶
9 years ago
// Example usage:
// Connect to a ODBC database that exists on your system
$link = odbc_connect("some_dsn_name", "user", "password") or die(odbc_errormsg() );
$result = @odbc_data_source( $link, SQL_FETCH_FIRST );
while($result)
{
echo "DSN: " . $result['server'] . " - " . $result['description'] . "<br>\n";
$result = @odbc_data_source( $link, SQL_FETCH_NEXT );
}
odbc_close($link);
