SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

PHPからMicrosoft SQL Serverを使おう!(AD)

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

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

  • X ポスト
  • このエントリーをはてなブックマークに追加

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にまったく同じく作成して、そちらを使用させるということもできそうです。

次のページ
2 無償のMicrosoft SQL Serverについて

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
PHPからMicrosoft SQL Serverを使おう!連載記事一覧

もっと読む

この記事の著者

物江 修(日本マイクロソフト株式会社)(モノエ オサム(ニホンマイクロソフトカブシキガイシャ))

2000年よりマイクロソフト、NTT ドコモ のジョイントベンチャー立ち上げに参加。技術者として商用 ASP サービスの設計と開発に従事。 2004 年、マイクロソフトに入社。インターネット開発製品のサポートエンジニアを経て現職に。 現在は IIS から ASP.NET まで、マイクロソフトのインターネット技術の啓発活動を行う。ブログ: http://blogs.msdn.com/b/osamum/ Twitter: osamum_MS

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/5736 2012/01/27 16:43

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング