use*_*388 24 php sql-server odbc pdo
当我执行此代码时:
print_r(PDO::getAvailableDrivers());
Run Code Online (Sandbox Code Playgroud)
它说我有odbc司机可用.
Array ( [0] => mysql [1] => odbc [2] => sqlite )
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试使用它时:
$handle = new PDO("odbc:Server=dbServerIpAddress,myportnumber;Database=mydatabase", "myusername", 'mypassword');
Run Code Online (Sandbox Code Playgroud)
它没有做任何事情 - 没有错误,根本不起作用.它甚至不会执行该行!
如何通过PDO和ODBC将PHP连接到此MSSQL数据库?
Jam*_*esP 37
接受的答案是正确的,直到实际的PHP调用.正如有人正确地评论说它应该调用odbc驱动程序.其次,它不使用已在odbc.ini中配置的数据源名称(DSN),但实际上是在创建ad-hoc DSN.代替:
$pdo = new PDO("odbc:mssql", "$dbuser","$dbpwd");
Run Code Online (Sandbox Code Playgroud)
其中mssql引用odbc.ini中的DSN对象
您可以按如下方式创建ad-hoc DSN:
$pd = new PDO('odbc:DRIVER=FreeTDS;SERVERNAME=mssql;DATABASE=' . $dbName,
$dbuser, $dbpass);
Run Code Online (Sandbox Code Playgroud)
其中MSSQL现指服务器对象freetds.conf和freetds的驱动程序对象ODBCINST.INI
(这应该是一个评论,但我没有代表点).
Ben*_*ill 33
您需要设置几个配置文件./etc/odbc.ini,/etc/odbcinst.ini和/etc/freetds/freetds.conf(这些位置对Ubuntu 12.04有效,可能对大多数*nixes有效).
您需要安装unixodbc并且freetds(不确定CentOS上的软件包名称是什么).在Ubuntu中,这将是apt-get install unixodbc tdsodbc.
有关安装这些的帮助,请查看此问题无法通过Yum Package Manager安装FreeTDS
/etc/odbc.ini(此文件可能为空)
# 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
Run Code Online (Sandbox Code Playgroud)
/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
Run Code Online (Sandbox Code Playgroud)
/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
Run Code Online (Sandbox Code Playgroud)
您可能必须tds version = 7.1根据您的MSSQL版本更改上面的行.
完成这些更改后,您必须重新启动apache.
在您的PHP代码中,您将创建您的PDO对象,如下所示:
$pdo = new PDO("dblib:host=mssql;dbname=$dbname", "$dbuser","$dbpwd");
Run Code Online (Sandbox Code Playgroud)
请注意,您的用户名可能需要采用以下格式:domain\username.
此外,您将知道,如果您phpinfo()在页面中执行并搜索"freetds",它将显示一个mssql部分,其中freetds列为库版本.
| 归档时间: |
|
| 查看次数: |
81167 次 |
| 最近记录: |