CodeZine(コードジン)

特集ページ一覧

PHPからSQL Serverへの正しい接続方法

PHPからMicrosoft SQL Serverを使おう! 第2回

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加

目次

1.3 PHPからSQL Serverに接続するコード

 PHPからSQL Server Driver for PHPを使用してSQL Serverに接続するサンプルコードを紹介します。

 このコードが接続するデータベースの情報は以下のとおりです。

  • インスタンス名 : .\SQLEXPRESS
  • データベース名 : MyDB
  • テーブル名 : staffs
図 : テーブルの定義
図 : テーブルの定義
図 : テーブルのデータ
図 : テーブルのデータ
サンプルコード : sqlsrv_connect関数を使用したSQL Serverへの接続
<html>
    <head>
        <title></title>
    </head>
    <body>
<?php
//データベースのインスタンス名を指定
$serverName = ".\\SQLEXPRESS";
//接続情報を指定
$connectionInfo = array("UID"=>"sa",
                "PWD"=>"password",
                "Database"=>"MyDB",
                "CharacterSet"=>"UTF-8");
//コネクションを確立
$conn = sqlsrv_connect($serverName, $connectionInfo);
//クエリー文を指定
$tsql = "SELECT * from staffs";
//クエリーを実行
$result = sqlsrv_query($conn, $tsql);
?>
  <table>
<caption>スタッフリスト</caption>
<?php
    //実行結果を描画
    while($row = sqlsrv_fetch_array($result)) {
         printf("<tr><td class='hdr'>".$row['id']."</td>");
        printf("<td>".$row['name']."</td></tr>");
    }
?>
</table>
<?php
//クエリー結果の開放
sqlsrv_free_stmt($result);
//コネクションのクローズ
sqlsrv_close($conn);
?>
    </body>
</html>

 実行結果は以下の通りです。日本語を出力しても文字化けが発生していないことを確認してください。

図 : サンプルコードの実行結果
図 : サンプルコードの実行結果

1.4 便利なPDOによる接続

 前述しましたが、SQL Server Driver for PHP Version 2.0ではPDO(PHP Data Object)をサポートしています。

 PDOはPHPに実装されているデータベース抽象化レイヤークラスであり、これを使用すると同じ関数を使用して複数種類にデータベースに接続することができます。

 たとえば、PDOを使用しないでPHPコードからデータベースに接続する場合、MySQLに接続する際はmysql_connect関数を、SQL Serverに接続する際にはsqlsrv_connect関数を、とそれぞれ異なる関数を使い分ける必要がありますが、PDOの場合は共通の関数を使用することができます。

サンプルコード : PDOを使用したSQL Serverへの接続
<html>
<head><title>PHP TEST</title>
<style type="text/css">
    table{
        border-color:skyblue;
        border-style:solid;
        boder-widht:1px;
        width:300px;
        }
    .hdr{background-color:gainsboro}
</style>
</head>
<body>
<table>
<caption>スタッフリスト</caption>
<?php
$dsn = 'sqlsrv:server=.\sqlexpress;database=MyDB';
$user = 'sa';
$password = 'P@ssword';
    $dbh = new PDO($dsn, $user, $password);
    $sql = "select * from staffs";
    foreach ($dbh->query($sql) as $row) {
        print("<tr><td class='hdr'>".$row['id']."</td>");
        print("<td>".$row["name"]."</td></tr>");
    }
$dbh = null;
?>
</table>
</body>
</html>

 たとえば、上記のサンプルコードは、PHPからSQL Serverに接続するコードですが、接続文字列とアカウント情報を以下のように書き換えることによりMySQLにも同じコードで接続することができます。

$dsn = 'mysql:host=localhost;dbname=MyDB';
$user = 'root';
$password = 'P@ssword

 データベースインスタンス名と、データベース名を指定する文字列がsqlsrvとmysqlでは微妙に異なることに注意してください。

 PDOを使用することにより、PHPアプリケーションは、複数のデータベースのサポートが容易になります。

 また、最近のPHPのOSS WebアプリケーションでもPDOを使用しているものが結構あるようなので、たとえばWebアプリケーションがMySQLに対して作成しているデータベーススキーマをSQL Serverにまったく同じく作成して、そちらを使用させるということもできそうです。


  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

バックナンバー

連載:PHPからMicrosoft SQL Serverを使おう!
All contents copyright © 2005-2020 Shoeisha Co., Ltd. All rights reserved. ver.1.5