当前位置: 首页 > 面试题库 >

通过PDO ODBC将PHP连接到MSSQL

韦繁
2023-03-14
问题内容

当我执行此代码时:

print_r(PDO::getAvailableDrivers());

它说我有odbc可用的驱动程序。

Array ( [0] => mysql [1] => odbc [2] => sqlite )

但是,当我尝试像这样使用它时:

$handle = new PDO("odbc:Server=dbServerIpAddress,myportnumber;Database=mydatabase", "myusername", 'mypassword');

它什么也没做-没有错误,也根本不起作用。它甚至不会执行到该行!

如何通过PDO和ODBC将PHP连接到此MSSQL数据库?


问题答案:

您需要设置几个配置文件。/etc/odbc.ini/etc/odbcinst.ini/etc/freetds/freetds.conf(这些位置是有效的Ubuntu
12.04,并可能是正确的大多数* nixes)。

您需要安装unixodbcfreetds(不确定CentOS上的软件包名称是什么)。在Ubuntu中将是apt-get install unixodbc tdsodbc

# Define a connection to a Microsoft SQL server
# The Description can be whatever we want it to be.
# The Driver value must match what we have defined in /etc/odbcinst.ini
# The Database name must be the name of the database this connection will connect to.
# The ServerName is the name we defined in /etc/freetds/freetds.conf
# The TDS_Version should match what we defined in /etc/freetds/freetds.conf
[mssql]
Description             = MSSQL Server
Driver                  = freetds
Database                = XXXXXX
ServerName              = MSSQL
TDS_Version             = 7.1

/etc/odbcinst.ini

# Define where to find the driver for the Free TDS connections.
# Make sure you use the right driver (32-bit or 64-bit).
[freetds]
Description = MS SQL database access with Free TDS
Driver      = /usr/lib/i386-linux-gnu/odbc/libtdsodbc.so
#Driver      = /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so
Setup       = /usr/lib/i386-linux-gnu/odbc/libtdsS.so
UsageCount  = 1

/etc/freetds/freetds.conf(或者您可以在/etc/freetds.conf中找到它)

# The basics for defining a DSN (Data Source Name)
# [data_source_name]
#       host = <hostname or IP address>
#       port = <port number to connect to - probably 1433>
#       tds version = <TDS version to use - probably 8.0>

# Define a connection to the Microsoft SQL Server
[mssql]
    host = XXXXXX
    port = 1433
    tds version = 7.1

您可能必须tds version = 7.1根据您的MSSQL版本更改上面的行。

进行这些更改后,您将必须重新启动apache。

在您的PHP代码中,您将如下创建PDO对象:

$pdo = new PDO("dblib:host=mssql;dbname=$dbname", "$dbuser","$dbpwd");

请注意,您的用户名可能需要采用以下格式:domain\username

另外,如果您phpinfo()在页面中执行并搜索“ freetds”,它将显示一个mssql部分,其中freetds列为“库版本” ,您将知道它起作用。



 类似资料:
  • 我想通过IntelliJ IDEA把MySQL和Java连接起来。 我用的是MySQL。设置为:< br >主机:127.0.01 端口:3306 用户:root 我要使用的数据库的名称是School。 在IntelliJ中,我添加了DB Navigator,设置为: 名称学校 描述:... 主机:localhost 端口:3306 用户:root 密码:在MySQL中工作的密码 毕竟我得到了一个

  • 我试图理解Retheart文档的这部分内容,但无法理解:https://softinstigate.atlassian.net/wiki/spaces/rh/pages/9207828/installation+and+setup#installationandsetup-5.1connectreshearttomongodbovertls/ssl 使用keytool创建导入mongod使用的公共

  • 问题内容: 我将Redis To Go与https://github.com/mranney/node_redis库结合使用。Redis给了我一个看起来像的URL,但是我不知道如何使用它,因为它只占用了主机和端口。 问题答案: 我相信您拥有的网址的方案是: 。 我不相信被使用。提供了两种登录方法:和。自述文件中有详细信息,但以下是相关部分供参考: redis.createClient(端口,主机,

  • 代理的代码在这里 生成脚本在这里 我在远程计算机上启动应用程序时使用 主机上打开了两个端口6004和6005,如果jconsole是应用程序本地的,我可以通过jconsole连接到应用程序。 然后创建2个ssh隧道 ssh隧道ssh-l 6004:localhost:6004 foo@server ssh隧道ssh-l 6005:localhost:6005 foo@server 现在的问题是我无

  • 问题内容: 我正在尝试使用以下代码建立新的PDO连接。 我不确定要使用什么驱动程序?或如何安装它们。我可以使用PHP中的函数进行完美连接,但我想改用PDO库。 我的mssql设置是: 问题答案: PDO mssql驱动程序不再可用,请使用(在php Windows下)或(在php linux下) http://msdn.microsoft.com/zh- CN/sqlserver/ff657782

  • 问题内容: 我正在尝试通过网络连接到MySQL数据库。我已经安装了MySQL,并且该服务在默认端口上运行。我还将SQL连接器安装到jar文件中,并将Java JDK添加到服务器计算机中。我可以使用以下代码连接到本地数据库: 但是,当我尝试通过IP地址(例如:192.168.1.45)通过网络连接到它时: 我收到连接错误: 有人知道这个问题是什么吗?我需要添加其他地址吗?我已经使用地址添加了默认端口