-2

データ ソース名からデータベース名と場所を取得することはできますか?

$dsn = $_GET['dsn'];
$conn=odbc_connect($dsn,'','');

更新されたコード

$dsn = "JuniorDSN";
$conn=odbc_connect($dsn,'','') or die ("Can't connect to DSN");

$dsnarray = explode(";",$dsn);
$dsn0 = $dsnarray[0];

echo $dsn0;
4

1 に答える 1

1

一般的な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");
于 2012-12-30T15:42:45.007 に答える