当前位置:网站首页>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
边栏推荐
- regular expression
- MySQL sync could not find first log file name in binary log index file error
- 群体智能自主作业智慧农场项目启动及实施方案论证会议
- Tun equipment principle
- TLS / SSL protocol details (30) RSA, DHE, ecdhe and ecdh processes and differences in SSL
- win10 任务栏通知区图标不见了
- Hj31 word inversion
- Mysql database explanation (IX)
- Llvm - generate local variables
- X509 certificate cer format to PEM format
猜你喜欢
Detailed explanation of kubernetes (IX) -- actual combat of creating pod with resource allocation list
API gateway / API gateway (II) - use of Kong - load balancing
Sword finger offer (2) -- for Huawei
Detailed explanation of C language knowledge points -- data types and variables [1] - carry counting system
regular expression
MultiTimer v2 重构版本 | 一款可无限扩展的软件定时器
Tun model of flannel principle
Openfaas practice 4: template operation
How to upload large files quickly?
MySQL InnoDB transaction
随机推荐
重定向和请求转发详解
SSH connects to the remote host through the springboard machine
Squid agent
Summary of interfaces for JDBC and servlet to write CRUD
Detailed explanation of redirection and request forwarding
Modify the default listening IP of firebase emulators
Mysql database explanation (VII)
C语言超全学习路线(收藏让你少走弯路)
JSON date time date format
免费在upic中设置OneDrive或Google Drive作为图床
Ffmpeg installation error: NASM / yasm not found or too old Use --disable-x86asm for a clipped build
Sword finger offer (1) -- for Huawei
Kubernetes详解(九)——资源配置清单创建Pod实战
Adobe Illustrator menu in Chinese and English
My raspberry PI zero 2W tossing notes record some problems encountered and solutions
MySQL Basics
Subnet division of flannel principle
About UDP receiving ICMP port unreachable
Share 20 tips for ES6 that should not be missed
How to write the keywords in the cover and title? As we media, why is there no video playback