land.to では、もうかなり前から新規申込は停止していますが、既にアカウントを持っている場合は MySQL と PostgreSQL が使用できます。MySQL はめずらしくありませんが、PostgreSQL はけっこう珍しいのでは無いでしょうか。 昔は、直接 SQL を実行できる WEB アプリを公開していたのですが、途中でいろいろあって削除し、それ以来も長い間放置していました。 で、久しぶりに PostgreSQL を確認してみるきちんと動作していたので記録です。 PostgreSQL用 クラス
<? # ******************************** # データベースクラス # ******************************** class DB { var $Connect; var $Result; # ******************************** # コンストラクタ # ******************************** function DB( $Server='localhost', $DbName='r205', $User='r205', $Password='パスワード' ) { $this->Connect = pg_connect( "host=$Server" . " port=5432" . " dbname=$DbName" . " user=$User" . " password=$Password" ); } # ******************************** # 接続解除 # ******************************** function Close( ) { pg_close( $this->Connect ); } # ******************************** # クエリー # ******************************** function Query( $SqlQuery ) { $ret = pg_query( $this->Connect, $SqlQuery ); return $ret; } # ******************************** # フェッチ # ******************************** function Fetch( $Result ) { return pg_fetch_array( $Result ); } # ******************************** # クエリーとフェッチ # ******************************** function QueryEx( $SqlQuery='' ) { if ( $SqlQuery != '' ) { $this->Result = $this->Query( $SqlQuery ); if ( !$this->Result ) { return FALSE; } return $this->Fetch ( $this->Result ); } else { return $this->Fetch ( $this->Result ); } } # ******************************** # 実行 # ******************************** function Execute( $SqlExec ) { $ret = pg_query( $this->Connect, $SqlExec ); return $ret; } # ******************************** # バージョン文字列取得 # ******************************** function Version( ) { $Field = $this->QueryEx( "SHOW SERVER_VERSION" ); return $Field["server_version"]; } } ?>
データベースの接続や処理そのものは特に問題も無く動作しましたが、header 関数で出力したキャラクタセットがブラウザに届かないので、HTML 側の META 要素で指定しなければ化けてしまいます。また、ini_set( 'display_errors', "1" ) で、エラーを表示するようにしないとデバッグができません。以上2点を注意すれば、MySQL であろうが、PostgreSQL であろうが利用可能です 接続テスト
<?php header( "Content-Type: text/html; Charset=euc-jp" ); header( "pragma: no-cache" ); header( "Expires: Wed, 31 May 2000 14:59:58 GMT" ); header( "Cache-control: no-cache" ); ini_set( 'display_errors', "1" ); require_once( "dbpg.php" ); ?> <!DOCTYPE html> <html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=euc-jp"> <title></title> </head> <body> <pre> <? $SQL = new DB(); if ( $SQL->Connect === false ) { print "接続できませんでした<br>\n"; } else { print "接続されました<br>\n"; $Column = $SQL->QueryEx( "select * from 社員マスタ" ); while ( $Column ) { $Column = $SQL->QueryEx( ); print_r( $Column ); } $SQL->Close(); } ?> </pre> </body> </html>
|
【DB関連の最新記事】
- 複数行のグループデータを1行にまとめるSQL
- テーブル設計書作成 : VBScript + Excel.Application + SQLServer
- select 社員コード,氏名,(select count(*) from 得意先マスタ where 担当者 = 社員コード) as 件数 from 社員マスタ : 件数を where で使いたい場合..
- SQL Server とそのコンポーネントのバージョンとエディションを確認
- SQL*PlusだけでCSVを作成する
- PHP と MySQL 限定で SQL インジェクションを考えた場合
- Oracle11g + Windows7 : InstantClient を使用した軽量接続 ( Win32 )
- MySQL:GPLな再配布。プログラムは無しでデータのみ追加
- MySQL5.1.4の半手動インストール(インストール場所の変更)
- グループ関数の原則
- Oracleエクスポートユーティリティ(expdp)パラメータ入力支援HTMLアプリケーション
- 今年もPL/SQLはFunctionから
- OracleInstantClientによる接続確認
- SYSTEMユーザからスキーマを作成、販売管理データを投入する
- BCP.EXEで自動採番列(INTIDENTITY)を持つデータの移行
- SQLExpress2005のインストールから最速設定(2)
- SQLExpress2005のインストールから最速設定(3)
- SQLExpress2005のインストールから最速設定(1)
- 【Oracle10g接続】InstantClientを使用した接続
- MySQL5.1.26をUSBメモリに入れて使用する