我有一个PHP(v.5.3.17)插件,运行在SLES11 Apache上,用于向数据库发送查询。我已经安装了unixodbc(版本2.2.12)。
我想通过PHP:PDO将插件连接到远程MSSQL数据库以运行一些查询。
PDO:ODBC支持已启用:
PDO support enabled
PDO drivers odbc, mysql, pgsql, sqlite, sqlite2
我通过Telnet测试了连接。我得到了一个积极的结果。
telnet> open 10.22.77.18 1433
Trying 10.22.77.18...
Connected to 10.22.77.18.
Escape character is '^]'.
我还可以通过tsql连接到sql数据库:
#>tsql -S ms-sql -U <user> -P <passwort>
locale is "LC_CTYPE=de_DE.UTF-8;LC_NUMERIC=C;LC_TIME=C;LC_COLLATE=C;LC_MONETARY=C;LC_MESSAGES=C;LC_PAPER=C;LC_NAME=C;LC_ADDRESS=C;LC_TELEPHONE=C;LC_MEASUREMENT=C;LC_IDENTIFICATION=C"
locale charset is "UTF-8"
using default charset "UTF-8"
1>
通过isql我得到以下错误:
# isql -v ms-sql
[IM002][unixODBC][Driver Manager]Data source name not found, and no default driver specified
[ISQL]ERROR: Could not SQLConnect
我发现了一个关于将Linux ODBC与MSsql数据库连接的说明。
当我执行脚本时,我既没有得到消息"Connection established",也没有收到消息"No Connection establishing"。我只得到命令提示符">"。我也通过连接到一个虚假的IP得到了这个提示。
我认为我的连接字符串是错误的,但为什么我没有收到错误消息?
要使用PDO连接到MSSQL,可以使用适用于PHP或PDO_ODBC的SQL Server驱动程序。
PDO_SQLSRV手册中的一条评论提到,微软已经有一段时间没有更新他们的驱动程序了,官方版本仅适用于5.2、5.3和5.4。
下载SQL Server驱动程序并将其提取到PHP扩展目录中。然后激活php.ini
文件中的扩展名。您需要在该文件中添加以下行(您需要适应下载的文件名):
extension=php_pdo_sqlsrv_52_nts.dll
不要忘记重新启动服务器(这与重新启动服务不同)。我希望这会有所帮助。