您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

php7如何使用PDO连接数据库

2024/6/28 6:12:09发布23次查看
在php中,可以使用pdo连接数据库,但不一定每个人都知道同时兼容windows和centos的方法,下面就来介绍一下使用pdo连接,同时兼容windows和centos的方法,有需要的可以看看。
一、首先是windows安装扩展
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.dllextension=php_pdo_sqlsrv_7_ts_x64.dll
安装odbc driver,根据自己的需要选择上面的地址下载并安装。
现在可以使用phpinfo()来查看是否成功加载了 pdo_sqlsrv 模块。
二、centos安装扩展
前提貌似文档说一定要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/>"; }?>
推荐学习:php视频教程
以上就是php7如何使用pdo连接数据库的详细内容。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product