一般的なDSNは次のようになります。
Driver={Driver name with space hence curly braces};dbname=testdb
つまりparameter=value
、セミコロンで区切られたペアです。文字列;
を次に=
展開し、スペースを使用して値をトリミングするだけで、そこから情報を取得できます。{}
ただし、DSNを使用していませんが、事前定義された構成のエイリアスを使用しており、odbc.ini
(通常はUNIXライクなシステムの/etc/odbc.iniにあります)またはWindowsレジストリ(HKEY_CURRENT_USER\Software\ODBC\ODBC.INI
またはHKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI
)に保存されています。Linuxを使用していて、odbc.iniにアクセスできる場合は、parse_ini_fileを使用して解析できます。
$connectionInfo = parse_ini_file('/etc/odbc.ini', true);
var_dump($connectionInfo['JuniorDSN']);
Windowsを使用している場合は、レジストリからこの情報を取得する必要があります。COMオブジェクトを使用すると、この情報を取得できるはずです。
$shell = new COM("WScript.Shell");
$odbcServer = $shell->RegRead("HKEY_CURRENT_USER\\Software\\ODBC\\ODBC.INI\\JuniorDSN\\Server");