当前位置：网站首页>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/freetds/freetds.conf（ These positions are right Ubuntu 12.04 It works , And probably for most *nixes That's right. ）.
You need to install
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
# 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 ：
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
- 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  - carry counting system
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
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)
JSON date time date format
Ffmpeg installation error: NASM / yasm not found or too old Use --disable-x86asm for a clipped build
Sword finger offer (1) -- for Huawei
Adobe Illustrator menu in Chinese and English
My raspberry PI zero 2W tossing notes record some problems encountered and solutions
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