将sles-apache上的php-pdo连接到mssql数据库


connect php pdo on sles apache to mssql database

我有一个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

不要忘记重新启动服务器(这与重新启动服务不同)。我希望这会有所帮助。