当前位置:网站首页>Connect PHP to MSSQL via PDO ODBC
Connect PHP to MSSQL via PDO ODBC
2022-04-23 15:26:00 【allway2】
You need to set up several profiles ./etc/odbc.ini
,/etc/odbcinst.ini
and /etc/freetds/freetds.conf
( These positions are right Ubuntu 12.04 It works , And probably for most *nixes That's right. ).
You need to install unixodbc
and freetds
( Not sure CentOS What is the name of the package on ). stay Ubuntu in , This will be apt-get install unixodbc tdsodbc
.
Help on installing these , Please check this question Can't Install FreeTDS via Yum Package Manager
/etc/odbc.ini( This file may be empty )
# 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( Or you can go to /etc/freetds.conf Find it )
# 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
You may need tds version = 7.1
According to your MSSQL Version change the line above .
After making these changes , You must restart apache.
In your PHP In the code , You will create... Like this PDO object :
$pdo = new PDO("dblib:host=mssql;dbname=$dbname", "$dbuser","$dbpwd");
Please note that , Your user name may need to be in the following format :domain\username
.
Besides , If you execute and search in the page “freetds”, You will know that it works ,phpinfo()
This will display a mssql part , among freetds List as library version .
The accepted answer is in the actual PHP Is correct in the call . As someone rightly commented , It should call odbc The driver . secondly , It has not been used in odbc.ini The name of the data source configured in (DSN), But it's actually creating a ad-hoc DSN. Instead, :
$pdo = new PDO("odbc:mssql", "$dbuser","$dbpwd");
among mssql refer to odbc.ini Medium DSN object
You can create ad-hoc DSN:
$pd = new PDO('odbc:DRIVER=FreeTDS;SERVERNAME=mssql;DATABASE=' . $dbName,
$dbuser, $dbpass);
among mssql Now I mean freetds.conf Server object in , and FreeTDS refer to odbcinst.ini Driver object in
( This should really be a comment , But I don't represent ).
If you want to use FreeTDS The driver directly sets pdo odbc Connect To MS SQL The server , Without having to be in the configuration file freetds.conf It is specified in .
$connection_string = "odbc:DRIVER=FreeTDS;SERVER=$serverName;PORT=$portNo;DATABASE=$dbName";
$conn = new PDO($connection_string, $dbUser, $dbPass);
If you have a named instance MSSQL The server , You can delete the port number , And then to server_ip\instance_name Format modification $serverName for example :“192.168.1.1\sqlexpress”, among sqlexpress Is the instance name .
$connection_string = "odbc:DRIVER=FreeTDS;SERVER=$serverName;DATABASE=$dbName";
$conn = new PDO($connection_string, $dbUser, $dbPass);
Please note that odbcinst.ini Configure driver location in
[FreeTDS]
Description = TDS driver (Sybase/MS SQL)
Driver = libtdsodbc.so
Setup = libtdsS.so
版权声明
本文为[allway2]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/04/202204231525131265.html
边栏推荐
- Modify the default listening IP of firebase emulators
- Detailed explanation of C language knowledge points - data types and variables [2] - integer variables and constants [1]
- How to write the keywords in the cover and title? As we media, why is there no video playback
- MySQL sync could not find first log file name in binary log index file error
- Node.js ODBC连接PostgreSQL
- 8.4 realization of recurrent neural network from zero
- Mysql database explanation (10)
- Explanation of redis database (III) redis data type
- My raspberry PI zero 2W toss notes to record some problems and solutions
- 函数(第一部分)
猜你喜欢
【Leetcode-每日一题】安装栅栏
8.5 concise implementation of cyclic neural network
Wechat applet customer service access to send and receive messages
Sword finger offer (2) -- for Huawei
Deep learning - Super parameter setting
Mysql连接查询详解
setcontext getcontext makecontext swapcontext
Kubernetes详解(九)——资源配置清单创建Pod实战
T2 iCloud日历无法同步
字节面试 transformer相关问题 整理复盘
随机推荐
Explanation of redis database (I)
TLS / SSL protocol details (28) differences between TLS 1.0, TLS 1.1 and TLS 1.2
字节面试 transformer相关问题 整理复盘
8.3 language model and data set
MySQL Basics
Nuxt project: Global get process Env information
Set onedrive or Google drive as a drawing bed in upic for free
Kubernetes详解(十一)——标签与标签选择器
网站某个按钮样式爬取片段
Wechat applet customer service access to send and receive messages
regular expression
JS -- realize click Copy function
自动化测试框架常见类型▏自动化测试就交给软件测评机构
Byte interview programming question: the minimum number of K
Crawling fragment of a button style on a website
TLS / SSL protocol details (30) RSA, DHE, ecdhe and ecdh processes and differences in SSL
UML learning_ Day2
Three uses of kprobe
What is the role of the full connection layer?
8.2 text preprocessing