您好,登錄后才能下訂單哦!
本篇內容主要講解“php7怎么用PDO連接數據庫”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“php7怎么用PDO連接數據庫”吧!
在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.dll extension=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; ?> <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/>"; } ?>
到此,相信大家對“php7怎么用PDO連接數據庫”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。