使用PHP获取本地pc中的ODBC数据源列表

使用PHP获取本地pc中的ODBC数据源列表,php,mysql,odbc,Php,Mysql,Odbc,我正在寻找一种在本地PC上使用PHP获取ODBC数据源列表的方法。 如何实现这一点?PHP内置了对MySQL的连接支持,因此不需要ODBC连接。PHP不支持的任何数据库环境都需要ODBC。PHP内置了MySQL连接支持,因此不需要ODBC连接。PHP不支持的任何数据库环境都需要ODBC。如果我假设您在windows上运行 用户定义的ODBC连接存储在HKEY_CURRENT_User\Software\ODBC\ODBC.INI下 系统定义的ODBC连接存储在HKEY_LOCAL_MACHINE

我正在寻找一种在本地PC上使用PHP获取ODBC数据源列表的方法。
如何实现这一点?

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

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

如果我假设您在windows上运行

用户定义的ODBC连接存储在HKEY_CURRENT_User\Software\ODBC\ODBC.INI下

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

ODBC驱动程序在HKEY\U LOCAL\U MACHINE\SOFTWARE\ODBC\ODBCINST.INI下定义

所以您需要一些php技巧来读取注册表,比如or

如果我假设您在unix/linux上,那么

用户定义的ODBC连接存储在/etc/ODBC.ini下

系统定义的ODBC连接存储在/home/username/.ODBC.ini

ODBC驱动程序在/etc/odbcinst.ini下定义


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

如果我假设您在windows上运行

    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"; 
    }
用户定义的ODBC连接存储在HKEY_CURRENT_User\Software\ODBC\ODBC.INI下

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

ODBC驱动程序在HKEY\U LOCAL\U MACHINE\SOFTWARE\ODBC\ODBCINST.INI下定义

所以您需要一些php技巧来读取注册表,比如or

如果我假设您在unix/linux上,那么

用户定义的ODBC连接存储在/etc/ODBC.ini下

系统定义的ODBC连接存储在/home/username/.ODBC.ini

ODBC驱动程序在/etc/odbcinst.ini下定义


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

您的PHP在哪里运行,是在本地机器上还是在远程服务器上?Thanx Pekka for reply我正在使用local one Regards。这里有对PHP的ODBC支持,但我找不到在其中列出可用数据源的方法。您可能需要使用Windows程序/命令获取列表,然后运行
exec()
获取结果。但是可能会出现一些问题,请稍等。我以前读过这本支持手册,但我没有找到我需要的,无论如何,谢谢你。你的PHP在哪里运行,在本地机器上还是在远程服务器上?Thanx Pekka回答我在本地一级工作,这是对PHP的ODBC支持,但我看不到一种方法来列出可用的数据源。您可能需要使用Windows程序/命令获取列表,然后运行
exec()
获取结果。但也许这里出现了一些问题,请稍等。我以前读过这本支持手册,但我没有找到我需要的,无论如何,非常感谢
    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"; 
    }