溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

php7怎么用PDO連接數(shù)據(jù)庫

發(fā)布時(shí)間:2021-07-01 09:42:32 來源:億速云 閱讀:146 作者:chen 欄目:編程語言

本篇內(nèi)容主要講解“php7怎么用PDO連接數(shù)據(jù)庫”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“php7怎么用PDO連接數(shù)據(jù)庫”吧!

在php中,可以使用pdo連接數(shù)據(jù)庫,但不一定每個(gè)人都知道同時(shí)兼容windows和centos的方法,下面就來介紹一下使用PDO連接,同時(shí)兼容windows和centos的方法,有需要的可以看看。

一、首先是windows安裝擴(kuò)展

7.0.x的擴(kuò)展下載地址:

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擴(kuò)展(Microsoft Drivers for PHP for SQL Server),連接里有多個(gè)文件,只需要下載 SQLSRV40.EXE 即可。

解壓后根據(jù)自己PHP的版本選擇32位或64位的擴(kuò)展,注意區(qū)分(Thread safe?)nts和ts。

復(fù)制擴(kuò)展需要的文件到PHP擴(kuò)展目錄。(例如我這里使用的是:php_pdo_sqlsrv_7_ts_x64.dll 和  php_sqlsrv_7_ts_x64.dll)

修改php.ini添加以下兩行來啟用擴(kuò)展:

extension=php_sqlsrv_7_ts_x64.dll
extension=php_pdo_sqlsrv_7_ts_x64.dll

安裝ODBC Driver,根據(jù)自己的需要選擇上面的地址下載并安裝。

現(xiàn)在可以使用phpinfo()來查看是否成功加載了 pdo_sqlsrv 模塊。

二、Centos安裝擴(kuò)展

前提貌似文檔說一定要PHP7以后的版本,以前很多都是第三方FreeTDS,再怎么搞也沒有微軟官方的穩(wěn)定吧!

1、加入微軟的源

curl https://packages.microsoft.com/config/rhel/7/prod.repo > /etc/yum.repos.d/mssqlrelease.repo

2、防止沖突先卸載原有版本(可選)

yum remove unixODBC

3、安裝驅(qū)動(dòng)(三個(gè)都要裝上,缺一不可)

yum install msodbcsql mssql-tools unixODBC-devel

4、下載pdo_sqlsrv擴(kuò)展包

http://pecl.php.net/package/pdo_sqlsrv

5、以4.3.8為例

tar -zxvf pdo_sqlsrv-4.3.8.tgz

6、進(jìn)入解壓目錄

cd pdo_sqlsrv-4.0.8

7、執(zhí)行PHP的一個(gè)擴(kuò)展命令

/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,大功告成

下面我重點(diǎn)說我的踩坑記錄:

windows安裝完后,2種方式調(diào)用,我最開始用的sqlsrv_connect方式,能成功調(diào)用,具體的api參考這里。

https://docs.microsoft.com/en-us/sql/connect/php/sqlsrv-driver-api-reference

但是上面的安裝方法,Centos服務(wù)器最終是只安裝pdo_sqlsrv.so的。所以只能采用另外一種pdo方式調(diào)用,才是通用的。

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;
	 ?> 
	 
	 <h2> First 10 results are : </h2>
	 
	 <?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());
	 ?> 
	 
	 <h2> Product Key inserted is :</h2> 
	 
	 <?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/>";
	 }
?>

到此,相信大家對(duì)“php7怎么用PDO連接數(shù)據(jù)庫”有了更深的了解,不妨來實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI