1.3 PHPからSQL Serverに接続するコード
PHPからSQL Server Driver for PHPを使用してSQL Serverに接続するサンプルコードを紹介します。
このコードが接続するデータベースの情報は以下のとおりです。
- インスタンス名 : .\SQLEXPRESS
- データベース名 : MyDB
- テーブル名 : staffs
<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の場合は共通の関数を使用することができます。
<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にまったく同じく作成して、そちらを使用させるということもできそうです。
この記事は参考になりましたか?
- PHPからMicrosoft SQL Serverを使おう!連載記事一覧
-
- PHPからSQL Serverを使う選択肢の将来性
- PHPとSQL Serverで実践する「帳票出力」の新しい考え方
- PHPからSQL Serverへの正しい接続方法
- この記事の著者
-
物江 修(日本マイクロソフト株式会社)(モノエ オサム(ニホンマイクロソフトカブシキガイシャ))
2000年よりマイクロソフト、NTT ドコモ のジョイントベンチャー立ち上げに参加。技術者として商用 ASP サービスの設計と開発に従事。 2004 年、マイクロソフトに入社。インターネット開発製品のサポートエンジニアを経て現職に。 現在は IIS から ASP.NET まで、マイクロソフトのインターネット技術の啓発活動を行う。ブログ: http://blogs.msdn.com/b/osamum/ Twitter: osamum_MS
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社
この記事は参考になりましたか?
この記事をシェア
