PHPで SQL Server 2012 Expressにつなごう
OS: Windows7
PHP: 5.4.25
上記から SQL Server 2012 Express に繋ぎます。(2014/04/01現在)
1.Microsoftのダウンロードセンターから
Microsoft Drivers 3.0 for PHP for SQL Server
http://www.microsoft.com/en-us/download/details.aspx?id=20098
をダウンロード。
2012Expressは 3.0でないと扱えない。だが2000は3.0では対応してない。
あと 3.0は PHPの5.3、5.4しか対応していない。
2.解凍して、PHPのエクステンションディレクトリにコピーする。
php.ini に extension_dir = の項目があるので念のため確認。
私の環境の場合、
extension_dir = "C:/Bitnami/redmine-2.5.0-0/php/ext"
※Bitnami便利すぎ!超応援してる!
3.php.ini にエクステンションを登録。
extension=php_pdo_sqlsrv_54_ts.dll extension=php_sqlsrv_54_ts.dll
上記2行を追加。
追加したら、Apacheを再起動して phpinfo()で 「sqlsrv」の項目が増えているか確認。
最初、非スレッドセーフ版(php_sqlsrv_54_nts/php_pdo_sqlsrv_54_nts)を登録していたが、どうもドライバが組み込まれないのでスレッドセーフ版に変更したら無事組み込まれた。
4.Microsoft SQL Server 2012 Native Client のインストール。
http://www.microsoft.com/ja-jp/download/confirmation.aspx?id=29065
Microsoft SQL Server 2012 Native Client(sqlncli.msi)
SQL Serverの2012 Feature Packページに置いてある。
なんか 2008用のものも、x86用もx64用も どのインストールパッケージも 名前が sqlncli.msi で同じぽい。間違えないように注意。
これのインストールが終わってないと
[message] => This extension requires the Microsoft SQL Server 2012 Native Client. Access the following URL to download the Microsoft SQL Server 2012 Native Client ODBC driver for x86: http://go.microsoft.com/fwlink/?LinkId=163712 [message] => [Microsoft][ODBC Driver Manager] データ ソース名および指定された既定のドライバーが見つかりません。
のようなエラーが出て接続できない。URLまで書いてくれてるのは親切で有り難いが これ英語サイトだよ。
5.接続テスト。
//データベースのインスタンス名を指定 $serverName = "192.168.12.45,1433"; //接続情報を指定 $connectionInfo = array("UID"=>"sa", "PWD"=>"p@ssword", "Database"=>"targetdatabase", "CharacterSet"=>"UTF-8"); $conn = sqlsrv_connect( $serverName, $connectionInfo); if( $conn ) { echo "Connection established.
"; }else{ echo "Connection could not be established.
"; die( print_r( sqlsrv_errors(), true)); }
繋がった!
$sql = "SELECT * from M_費用;"; $result = sqlsrv_query($conn, $sql); $row = sqlsrv_fetch_array($result); print_r($row);
これ、項目名が Shift-JISで返ってきてるよ。CharacterSetの指定でコンバートされるの データだけか。Shift-JISか。Shift-JISですかー。