php7.*连接mssql数据库,使用PDO连接,同时兼容windows和centos
2017-12-14 12:18
946 查看
首先说明,安装部分,我是转载的。
一、首先是windows安装扩展,转载自:https://www.cnblogs.com/huixch/p/7065033.html
7.0.x的扩展下载地址:
Microsoft Drivers for PHP for SQL Server https://www.microsoft.com/en-us/download/details.aspx?id=20098
ODBC Driver:
Microsoft® ODBC Driver 11 for SQL Server® - Windows (支持Sql Server® 2005) https://www.microsoft.com/zh-CN/download/details.aspx?id=36434
Microsoft® ODBC Driver 13 for SQL Server® - Windows + Linux (支持最新的SQL Server® 2016) https://www.microsoft.com/zh-CN/download/details.aspx?id=50420
安装配置:
下载SQL Server的PHP扩展(Microsoft Drivers for PHP for SQL Server),连接里有多个文件,只需要下载 SQLSRV40.EXE 即可。
解压后根据自己PHP的版本选择32位或64位的扩展,注意区分(Thread safe?)nts和ts。
复制扩展需要的文件到PHP扩展目录。(例如我这里使用的是:php_pdo_sqlsrv_7_ts_x64.dll 和 php_sqlsrv_7_ts_x64.dll)
修改php.ini添加以下两行来启用扩展:
安装ODBC Driver,根据自己的需要选择上面的地址下载并安装。
现在可以使用phpinfo()来查看是否成功加载了 pdo_sqlsrv 模块。
二、Centos安装扩展,转载自:http://www.thinkphp.cn/topic/47058.html
前提貌似文档说一定要PHP7以后的版本,以前很多都是第三方FreeTDS,再怎么搞也没有微软官方的稳定吧!
1、加入微软的源
curl https://packages.microsoft.com/config/rhel/7/prod.repo > /etc/yum.repos.d/mssqlrelease.repo
复制代码
2、防止冲突先卸载原有版本(可选)
yum remove unixODBC
复制代码
3、安装驱动(三个都要装上,缺一不可)
yum install msodbcsql mssql-tools unixODBC-devel
复制代码
4、下载pdo_sqlsrv扩展包 http://pecl.php.net/package/pdo_sqlsrv
5、以4.3.8为例
tar -zxvf pdo_sqlsrv-4.3.8.tgz
复制代码
6、进入解压目录
cd pdo_sqlsrv-4.0.8
复制代码
7、执行PHP的一个扩展命令
/usr/local/php/bin/phpize
复制代码
8、编译
./configure --with-php-config=/usr/local/php/bin/php-config
复制代码
9、安装
make && make install
复制代码
10、修改/usr/local/php/etc/php.ini 添加extension
extension = "pdo_sqlsrv.so"
11、重启php-fpm和nginx,大功告成
上面都是转载的,下面我重点说我的踩坑记录:
windows安装完后,2种方式调用,我最开始用的sqlsrv_connect方式,能成功调用,具体的api参考这里。
https://docs.microsoft.com/en-us/sql/connect/php/sqlsrv-driver-api-reference
但是上面的安装方法,Centos服务器最终是只安装pdo_sqlsrv.so的。所以只能采用另外一种pdo方式调用,才是通用的。
https://github.com/Microsoft/msphpsql/edit/master/sample/pdo_sqlsrv_sample.php
一、首先是windows安装扩展,转载自:https://www.cnblogs.com/huixch/p/7065033.html
7.0.x的扩展下载地址:
Microsoft Drivers for PHP for SQL Server https://www.microsoft.com/en-us/download/details.aspx?id=20098
ODBC Driver:
Microsoft® ODBC Driver 11 for SQL Server® - Windows (支持Sql Server® 2005) https://www.microsoft.com/zh-CN/download/details.aspx?id=36434
Microsoft® ODBC Driver 13 for SQL Server® - Windows + Linux (支持最新的SQL Server® 2016) https://www.microsoft.com/zh-CN/download/details.aspx?id=50420
安装配置:
下载SQL Server的PHP扩展(Microsoft Drivers for PHP for SQL Server),连接里有多个文件,只需要下载 SQLSRV40.EXE 即可。
解压后根据自己PHP的版本选择32位或64位的扩展,注意区分(Thread safe?)nts和ts。
复制扩展需要的文件到PHP扩展目录。(例如我这里使用的是:php_pdo_sqlsrv_7_ts_x64.dll 和 php_sqlsrv_7_ts_x64.dll)
修改php.ini添加以下两行来启用扩展:
extension=php_sqlsrv_7_ts_x64.dll extension=php_pdo_sqlsrv_7_ts_x64.dll
安装ODBC Driver,根据自己的需要选择上面的地址下载并安装。
现在可以使用phpinfo()来查看是否成功加载了 pdo_sqlsrv 模块。
二、Centos安装扩展,转载自:http://www.thinkphp.cn/topic/47058.html
前提貌似文档说一定要PHP7以后的版本,以前很多都是第三方FreeTDS,再怎么搞也没有微软官方的稳定吧!
1、加入微软的源
curl https://packages.microsoft.com/config/rhel/7/prod.repo > /etc/yum.repos.d/mssqlrelease.repo
复制代码
2、防止冲突先卸载原有版本(可选)
yum remove unixODBC
复制代码
3、安装驱动(三个都要装上,缺一不可)
yum install msodbcsql mssql-tools unixODBC-devel
复制代码
4、下载pdo_sqlsrv扩展包 http://pecl.php.net/package/pdo_sqlsrv
5、以4.3.8为例
tar -zxvf pdo_sqlsrv-4.3.8.tgz
复制代码
6、进入解压目录
cd pdo_sqlsrv-4.0.8
复制代码
7、执行PHP的一个扩展命令
/usr/local/php/bin/phpize
复制代码
8、编译
./configure --with-php-config=/usr/local/php/bin/php-config
复制代码
9、安装
make && make install
复制代码
10、修改/usr/local/php/etc/php.ini 添加extension
extension = "pdo_sqlsrv.so"
11、重启php-fpm和nginx,大功告成
上面都是转载的,下面我重点说我的踩坑记录:
windows安装完后,2种方式调用,我最开始用的sqlsrv_connect方式,能成功调用,具体的api参考这里。
https://docs.microsoft.com/en-us/sql/connect/php/sqlsrv-driver-api-reference
但是上面的安装方法,Centos服务器最终是只安装pdo_sqlsrv.so的。所以只能采用另外一种pdo方式调用,才是通用的。
https://github.com/Microsoft/msphpsql/edit/master/sample/pdo_sqlsrv_sample.php
<?php echo "\n"; $serverName = "tcp:yourserver.database.windows.net,1433"; $database = "yourdatabase"; $uid = "yourusername"; $pwd = "yourpassword"; //Establishes the connection $conn = new PDO( "sqlsrv:server=$serverName ; Database = $database", $uid, $pwd); //Select Query $tsql = "SELECT [CompanyName] FROM SalesLT.Customer"; //Executes the query $getProducts = $conn->query( $tsql ); //Error handling FormatErrors ($conn->errorInfo()); $productCount = 0; $ctr = 0; ?> <h1> First 10 results are : </h1> <?php while($row = $getProducts->fetch(PDO::FETCH_ASSOC)) { if($ctr>9) break; $ctr++; echo($row['CompanyName']); echo("<br/>"); $productCount++; } $getProducts = NULL; $tsql = "INSERT INTO SalesLT.Product (Name, ProductNumber, StandardCost, ListPrice, SellStartDate) OUTPUT INSERTED.* VALUES ('SQL New 1', 'SQL New 2', 0, 0, getdate())"; //Insert query $insertReview = $conn->query( $tsql ); FormatErrors ($conn->errorInfo()); ?> <h1> Product Key inserted is :</h1> <?php while($row = $insertReview->fetch(PDO::FETCH_ASSOC)) { echo($row['ProductID']."<br/>"); } $insertReview = NULL; //Delete Query //We are deleting the same record $tsql = "DELETE FROM [SalesLT].[Product] WHERE Name=?"; $param = "SQL New 1"; $deleteReview = $conn->prepare($tsql); $deleteReview->bindParam(1, $param); $deleteReview->execute(); FormatErrors ($deleteReview->errorInfo()); function FormatErrors( $error ) { /* Display error. */ echo "Error information: <br/>"; echo "SQLSTATE: ".$error[0]."<br/>"; echo "Code: ".$error[1]."<br/>"; echo "Message: ".$error[2]."<br/>"; } ?>
相关文章推荐
- Windows下PHP7如何连接Oracle 12c,并使用PDO
- 在Godaddy的Windows主机上使用MySql.Data.dll连接数据库
- PHP5中如何使用PDO连接数据库
- mssql数据库使用web程序无法连接的问题
- python 使用pymssql 连接MSSQL数据库(带端口)
- PHP5中使用PDO连接数据库
- ThinkPHP使用PDO方式连接数据库之PDO的介绍与安装,开发环境是PHP5
- 使用PDO连接数据库 查询和插入乱码的解决方法
- 使用PDO连接数据库 查询和插入乱码的解决方法
- 使用PDO连接多种数据库
- 使用PDO连接数据库 查询和插入乱码的解决方法
- PHP5中使用PDO连接数据库的方法
- ThinkPHP3.0使用pdo方式连接sqlserver 2000、mssql 2000的配置,直接上配置文件,php版本是php5.2,服务器环境是ComsenzEXP
- [C] 跨平台使用TCHAR——让Linux等平台也支持tchar.h,解决跨平台时的格式控制字符问题,多国语言的同时显示(兼容vc/gcc/bcb,支持Windows/Linux/Mac)
- PHP5中PDO的简单使用 连接数据库
- PHP PDO 数据库的连接与使用
- PHP5中使用PDO连接数据库的方法
- 使用PDO连接数据库 查询和插入乱码的解决方法
- 使用JDBC连接MSSQL数据库中2000/2005/2008的区别