プログラミング言語や環境設定を中心としたパソコン関連の技術メモです。
主にシステム開発中に調べたことをメモしています。TIPS的な位置付けで、気が向いたときにちまちま更新していきます。
PHP、PHP5.xからSQLServer2005,2008へ接続
書いた気になって書いていませんでした。
PHPからSQLServerへの接続方法。

ポピュラーなやり方は「Microsoft Drivers for PHP for SQL Server」を使います。
ちなみに「SQL Server Driver for PHP 1.1」とかいう微妙に名前が違うのもありますが
中身は同じでした(2011/12/06時点)
今回私はPHP5.3からSQLServer2008へのアクセスで試しました。

ちなみにSQLServer2000の場合は
PHPインストールするといつの間にか仲間入りしている「mssql.dll」を使えばOK。
「Microsoft Drivers for PHP for SQL Server」はPHPのバージョン5.2、5.3対応です。
なもんで、PHP4.xからSQLServer2005 or 2008に接続するのは
多分無理なんじゃないかと推測しています。詳しくは調べてないけど。

さて、ほんでは本題。

まずは「Microsoft Drivers for PHP for SQL Server」のインストール。

1.「Microsoft Drivers for PHP for SQL Server」から
  「SQLSRV20.EXE」をダウンロード

2.「1.」でダウンロードした「SQLSRV20.EXE」を解凍。
  なんかいっぱいファイルが出てきて焦る。
  ※適当なフォルダ作ってそこに解凍した方が良いですよ。

3.それっぽい.dllをPHPのextフォルダに放り込む。
  解凍すると「php_sqlsrv_XX_nts_vcY.dll」とか「php_sqlsrv_XX_ts_vcY.dll」とか
  なんか色々出来ます。
  XXの部分がPHPのバージョン。5.2なら52、5.3なら53を選びます。
  ts、ntsはスレッドセーフとノンスレッドセーフです。
  PHPインストールするときどっち入れた(--?
  vcYの部分はやっぱりPHPをインストールするとき選んだ方です。
  普通はIISならvc9、Apacheならvc6かな。

4.php.ini編集。"extension="の記述を追加します。
  「extension=php_sqlsrv_53_ts_vc9.dll」とかそんな感じ。
  既に似たような記述があったりコメントアウトされていたりするので
  近くに追記しておいた方があとで分かりやすいよ。

5.終わり。だけど普通はphpinfo()で組み込まれたか確認します。
  それか一か八かで動かしてみるとかね。


さて、ほんでは実際の使い方ですが・・ほれ、サンプルφ(--)

  <?php
      $serverName = 'localhost';
      $connectionInfo = array(
           'UID' => 'hoge_user',
           'PWD' => 'hoge_pwd',
           'Database' => 'hoge_db',
           'CharacterSet' => 'UTF-8'
      );    //Unicodeの場合は「CharacterSet」指定
  
      //DB接続
      $conn = sqlsrv_connect($serverName, $connectionInfo);
      if($conn === false){
           die(print_r(sqlsrv_errors(), true));
      }
  
      // トランザクション開始
      if (!sqlsrv_begin_transaction($conn)) {
           die('Could not begin transaction.');
      }
  
      $params = array();

      //UniCode形式の文字はNプレフィックスをつける
      $sql = "insert into testTable01 values (1,N'あああああ',N'いいいい');";
  
      // クエリの実行
      if(sqlsrv_query($conn, $sql, $params)) {
          //コミット
          sqlsrv_commit($conn);
      }else{
          //ロールバック
          sqlsrv_rollback($conn);
          //DB切断
          sqlsrv_close($conn);
          exit;
      }
  
  
      //投入結果検索
      $sql = "SELECT * FROM testTable01 ";
      $stmt = sqlsrv_query($conn, $sql);
  
      if(!$stmt) {
           die(print_r(sqlsrv_errors(), true));
      }
  
      //結果を画面に表示してみっか
      while($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_NUMERIC)) {
           echo "$row[0]:$row[1]:$row[2]:<br />\n";
      }
  
      //リソース解放
      sqlsrv_free_stmt($stmt);
  
      // DB切断
      sqlsrv_close($conn);
  
  ?>


そんな感じ。
スポンサーリンク
 
このエントリーをはてなブックマークに追加 

category:● PHP  thema:システム開発 - genre:コンピュータ  Posted by ササキマコト 

  関連記事