php では、pdo を使用してデータベースに接続できますが、Windows と centos に同時に接続できる方法を誰もが知っているわけではありません。PDO を使用して Windows と centos に接続し、互換性を持たせる方法を紹介します。必要に応じて、見て読むことができます。
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
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install
extension = "pdo_sqlsrv.so"
https://docs.microsoft.com/en-us/sql/connect/php/sqlsrv-driver-api-reference
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/>"; } ?>
以上がphp7でPDOを使用してデータベースに接続する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。