ホームページ  >  記事  >  バックエンド開発  >  php7でPDOを使用してデータベースに接続する方法

php7でPDOを使用してデータベースに接続する方法

醉折花枝作酒筹
醉折花枝作酒筹転載
2021-07-01 09:27:072187ブラウズ

php では、pdo を使用してデータベースに接続できますが、Windows と centos に同時に接続できる方法を誰もが知っているわけではありません。PDO を使用して Windows と centos に接続し、互換性を持たせる方法を紹介します。必要に応じて、見て読むことができます。

php7でPDOを使用してデータベースに接続する方法

1. まず、Windows インストール拡張機能

7.0.x 拡張機能のダウンロード アドレス:

Microsoft Drivers for PHP for SQL Server https ://www.microsoft.com/en-us/download/details.aspx?id=20098

ODBC ドライバー:

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 ビットの拡張子を選択し、nt と t を区別する (スレッドセーフ?) ことに注意してください。

拡張機能に必要なファイルを PHP 拡張機能ディレクトリにコピーします。 (たとえば、ここで使用するのは php_pdo_sqlsrv_7_ts_x64.dll と php_sqlsrv_7_ts_x64.dll です)

php.ini を変更し、次の 2 行を追加して拡張機能を有効にします:

extension=php_sqlsrv_7_ts_x64.dll
extension=php_pdo_sqlsrv_7_ts_x64.dll

ODBC ドライバーをインストールします。必要に応じて選択してください。上記のアドレスからダウンロードしてインストールしてください。

phpinfo() を使用して、pdo_sqlsrv モジュールが正常にロードされたかどうかを確認できるようになりました。

2. Centos インストール拡張機能

ドキュメントには PHP7 以降であることが前提となっているようですが、以前はサードパーティ製の FreeTDS が多かったです。 Microsoft の公式バージョンほど安定していません。

1. Microsoft のソースに参加します

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

2. 競合を防ぐために、最初に元のバージョンをアンインストールします (オプション)

yum remove unixODBC

3. ドライバーをインストールします (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

を実行. コンパイル

./configure --with-php-config=/usr/local/php/bin/php-config

9. インストール

make && make install

10. /usr/local/php/ を修正etc/php .ini 拡張機能を追加

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[&#39;CompanyName&#39;]);
		 echo("<br/>");
		 $productCount++;
	 }
	 $getProducts = NULL;
	 
	 $tsql = "INSERT INTO SalesLT.Product (Name, ProductNumber, StandardCost, ListPrice, SellStartDate) OUTPUT INSERTED.* VALUES (&#39;SQL New 1&#39;, &#39;SQL New 2&#39;, 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[&#39;ProductID&#39;]."<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を使用してデータベースに接続する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。