extension=php_com_dotnet.dll によって、Windows では、PHP が COM を使えるようになります。他の ODBC 経由と同じく、SHIFT_JIS 前提となりますが、本来の Fields コレクションの文字列での参照がうまく行かないので、連想配列を作成して利用の準備をしています。 PHP で COM を使うような状況は、VBScript のような Windows 純正のスクリプトを使う代わりに、PHP を Windows の保守に使うという選択肢です。そうすると、COM と PHP の関数群の両方が使えるようになります。
<?php header( "Content-Type: text/html; Charset=shift_jis" ); header( "pragma: no-cache" ); header( "Expires: Wed, 31 May 2000 14:59:58 GMT" ); header( "Cache-control: no-cache" ); // 日本語設定 mb_language( "ja" ); // 内部エンコード mb_internal_encoding("UTF-8"); // 接続オブジェクト $cn = new COM( "ADODB.Connection" ); // レコードセットオブジェクト $rs = new COM( "ADODB.Recordset" ); $server = 'localhost'; $db_name = 'lightbox'; $user = 'root'; $password = 'パスワード'; // 接続文字列作成 $connect_string = "Provider=MSDASQL;"; $connect_string .= "Driver={MySQL ODBC 5.3 Unicode Driver};"; $connect_string .= "Server={$server};"; $connect_string .= "DATABASE={$db_name};"; $connect_string .= "UID={$user};"; $connect_string .= "PWD={$password};"; $connect_string .= "charset=cp932;"; // 接続 try { $cn->Open( $connect_string ); } catch ( Exception $ex ) { die( '{"error": "接続できませんでした: ' . $ex->getMessage() . '"}' ); } $query = "select * from 社員マスタ"; try { // レコードセット取得 $rs->Open( $query, $cn ); } catch ( Exception $ex ) { die( '{"error":' . $ex->getMessage() . '"}' ); } // 列数 $field_count = $rs->Fields->Count; $count = 0; ?> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=shift_jis"> <style> * { font-family: "メイリオ", Meiryo, "MS Pゴシック", sans-serif; font-size: 12px; } table { border-collapse: collapse; border-style: solid; border-color: #c0c0c0; border-width: 1px; background-color: #FFFFFF; } td { padding: 5px; border-style: solid; border-color: #c0c0c0; border-width: 1px; } </style> </head> <body> <?php $log_file = "rowdata_006.log"; file_put_contents( $log_file,"" ); print "<table>\n"; while (!$rs->EOF) { print "<tr>\n"; print "\t<td>" . ($count + 1) . "</td>\n"; for( $i = 0; $i < $field_count; $i++ ) { $wk = $rs->Fields[$i]->value.""; print "\t<td>{$wk}</td>\n"; // 連想配列作成 $field[$rs->Fields[$i]->name] = $rs->Fields[$i]->value.""; } print "</tr>\n"; $count++; file_put_contents( $log_file, print_r($field,true), FILE_APPEND ); $rs->MoveNext(); } print "</table>"; // レコードセットを閉じる $rs->Close(); // 接続解除 @$cn->Close(); ?> <br> 出力件数 : <?= $count ?>
関連する記事
|
【MySQLの最新記事】
- MySQL に PIPES_AS_CONCAT を設定して、CSV を出力する SQL
- MySQL : DB のデータを簡単に沢山作る方法は inner join
- MySQL で、Group by して合算された行内で最新データの明細を再び取り出す SQL
- MySQL のコマンドラインの操作
- Windows 環境の MySQL から日本語名のテーブルを コマンドプロンプトでエクスポート(mysqldump.exe)する
- MySQLの日本語オンラインマニュアル、5.6 とその中のいくつかの重要なリンク
- MySQL のコマンドプロンプトからの処理用バッチファイル
- MySQL で、主キーの作り変えのプロセス / serial では、自動的に インデックスが作成されます
- MySQL 5.6 (Generally Available (GA) Releases) インストール
- MySQL : 引数の無い LAST_INSERT_ID() と 引数のある LAST_INSERT_ID( n ) の使用方法
- MySQL における AUTO_INCREMENT 列の設定および詳細
- MySQL のプログラムからの経過時間の表現方法( CAST, STR_TO_DATE, GET_FORMAT, DATE_FORMAT, TIMEDIFF )
- MySQL で出退勤の列を datetime 型で持った場合、列を使用して DATEDIFF と TIMEDIFF で直接計算
- MySQL を UTF-8 環境で作成して、mysqldump.exe でバックアップするバッチファイルのサンプル
- MySQL 5.6 : テストデータ自動作成スクリプト
- VBScript + MySQL : ADO( ODBC ) による接続とデータの取得(SELECT)
- PHP + MySQL : Windows における ODBC 経由での接続とデータの取得(SELECT)
- PHP + MySQL : PDO_MySQL での接続とデータの取得(SELECT)
- PHP + MySQL : MySQL 改良版拡張モジュール mysqli クラスでの接続とデータの取得(SELECT)
- PHP + MySQL : PHP 5.5.0 で非推奨の MySQL 関数での接続とデータの取得(SELECT)