当前位置:网站首页>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
边栏推荐
- Ffmpeg installation error: NASM / yasm not found or too old Use --disable-x86asm for a clipped build
- Elk installation
- setcontext getcontext makecontext swapcontext
- Openstack theoretical knowledge
- Functions (Part I)
- 电脑怎么重装系统后显示器没有信号了
- Introduction to dirty reading, unrepeatable reading and phantom reading
- Introduction to distributed transaction Seata
- The win10 taskbar notification area icon is missing
- js——實現點擊複制功能
猜你喜欢
X509 certificate cer format to PEM format
机器学习——逻辑回归
TLS / SSL protocol details (28) differences between TLS 1.0, TLS 1.1 and TLS 1.2
asp. Net method of sending mail using mailmessage
Openfaas practice 4: template operation
8.3 language model and data set
木木一路走好呀
G007-HWY-CC-ESTOR-03 华为 Dorado V6 存储仿真器搭建
免费在upic中设置OneDrive或Google Drive作为图床
Krpano panorama vtour folder and tour
随机推荐
Deep learning - Super parameter setting
Little red book timestamp2 (2022 / 04 / 22)
让阿里P8都为之着迷的分布式核心原理解析到底讲了啥?看完我惊了
今日睡眠质量记录76分
Compiling OpenSSL
深度学习——超参数设置
Wechat applet customer service access to send and receive messages
重定向和请求转发详解
How to use OCR in 5 minutes
我的 Raspberry Pi Zero 2W 折腾笔记,记录一些遇到的问题和解决办法
The win10 taskbar notification area icon is missing
Adobe Illustrator menu in Chinese and English
Mysql database explanation (10)
Thinkphp5 + data large screen display effect
Tun equipment principle
Mysql database explanation (VII)
T2 iCloud日历无法同步
SSH connects to the remote host through the springboard machine
For 22 years, you didn't know the file contained vulnerabilities?
软件性能测试报告起着什么作用?第三方测试报告如何收费?