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メモリに入れて使用する




























