使用PHP获取本地计算机中ODBC数据源的列表

使用PHP获取本地计算机中ODBC数据源的列表

问题描述:

我正在寻找一种方法来使用PHP获取本地PC中的ODBC数据源列表。 我该如何做到这一点?使用PHP获取本地计算机中ODBC数据源的列表

+0

你的PHP运行在本地机器上还是远程服务器上? – 2010-03-22 14:54:56

+0

Thanx Pekka的回复 我在本地工作 关于 – 2010-03-22 15:00:48

+0

有PHP支持PHP http://www.php.net/manual/en/function.odbc-connect.php,但我可以'您可以看到列出可用数据源的方法。您可能必须使用Windows程序/命令来获取列表,然后运行'exec()'来获取结果。但是也许有些东西出现在这里,等一下。 – 2010-03-22 15:05:58

PHP具有内置的MySQL连接支持,因此不需要ODBC连接。任何PHP不支持的数据库环境都需要ODBC。

如果我假设你使用的是Windows

用户定义的ODBC连接存储下HKEY_CURRENT_USER \ SOFTWARE \ ODBC \ ODBC.INI

系统定义的ODBC连接运行下HKEY_LOCAL_MACHINE \存储SOFTWARE \ ODBC \ ODBC.INI

ODBC驱动下HKEY_LOCAL_MACHINE \ SOFTWARE定义\ ODBC \ ODBCINST.INI

所以,你需要一些技巧与PHP从注册表像this onethis one

读如果我认为你是在Unix/Linux然后

用户定义的ODBC连接存储下的/ etc/ODBC。 INI

系统定义ODBC连接存储下/home/username/.odbc.ini

ODBC驱动定义在/etc/odbcinst.ini

所有这些都是类似INI的语法文本文件。

define('HKEY_LOCAL_MACHINE', 0x80000002); 
    $computer = '.'; 
    $reg = new COM("winmgmts:{impersonationLevel=impersonate}!\\\\$computer\\root\\default:StdRegProv"); 
    $key_path = 'SOFTWARE\ODBC\ODBCINST.INI'; 
    $sub_keys = new VARIANT(); 
    $reg->EnumKey(HKEY_LOCAL_MACHINE, $key_path, $sub_keys); 

    foreach($sub_keys as $sub_key){ 
     echo $sub_key . "\n"; 
    }