完全ではありませんが、一通りのテストは完了しています。まだまだバージョンアップすべき部分もありますが、とりあえず学校が後二日で冬休みになるので、学生が家で手軽に勉強できるように作成しました。
ODBC + MDB なので、ソースコードを SHIFT_JIS にするとここで行っているキャラクタセットの変換は必要無くなるのですが、いろいろと今時は全て UTF-8N で揃えたほうが学生の為に良いので、内部で変換しています。
$connect_string = "Provider=MSDASQL;";
$connect_string .= "Driver={Microsoft Access Driver (*.mdb)};";
$connect_string .= "dbq={$rpath}hanbaic.mdb;charSet=MS932;";
$connect = new odbc_mdb($connect_string);
class odbc_result {
var $connect;
var $result;
var $num_rows;
function odbc_result( $connect, $result ) {
$this->connect = $connect;
$this->result = $result;
$this->num_rows = 0;
}
// ***************************
// フェッチ
// ***************************
function fetch_array( $dummy ) {
$row = odbc_fetch_array( $this->result );
if ( $row === false ) {
return false;
}
$new_row = array();
foreach( $row as $k => $v ) {
$new_row[$this->connect->utf8($k)] = $this->connect->utf8($v);
}
return $new_row;
}
function fetch_all( $dummy ) {
$all_row = array();
while ($row = odbc_fetch_array( $this->result )) {
$new_row = array();
foreach( $row as $k => $v ) {
$new_row[$this->connect->utf8($k)] = $this->connect->utf8($v);
}
$all_row[] = (object)$new_row;
}
return $all_row;
}
}
class odbc_mdb {
var $connect;
var $result;
function odbc_mdb( $connect_string ) {
$this->connect = odbc_connect( $connect_string, "", "" );
}
// ***************************
// キャラクタ変換
// ***************************
function utf8($str) {
return mb_convert_encoding($str,"utf-8","MS932");
}
function sjis($str) {
return mb_convert_encoding($str,"MS932", "utf-8");
}
// ***************************
// 接続解除
// ***************************
function close( ) {
odbc_close( $this->connect );
}
// ***************************
// クエリー
// ***************************
function query( $sql_query ) {
$this->result = odbc_exec( $this->connect, $this->sjis($sql_query) );
return new odbc_result( $this, $this->result );
}
// ***************************
// 実行
// ***************************
function exec( $sql_exec ) {
$ret = odbc_exec( $this->connect, $this->sjis($sql_exec) );
return $ret;
}
}
関連する記事
実運用では無く、学習用の WWWサーバーとしてはこれ以外に無い『AN HTTP Server』ですが、古いソフトなので使い方にコツがあります
posted by
at 2015-11-30 22:35
|
PHP+DB
|

|