PHP + PostgreSQLat PHP
PHP + PostgreSQL - 暇つぶし2ch300:ノンノン
02/09/29 14:05 lz5l3CdA
やっぱりそうですか。
ということは、to_char でエラーが出るのもパージョンのせいですね。
レンタルサーバなのでどうにもできません。
フィールドのタイプを変えるしかないないですね。
原因が分かっただけでも良かったです。

みなさん、ありがとうございました。
また、何かあれば願いしますね。


301:297
02/09/29 14:17
>>300
date_part 関数使えば、フィールドの型は変えなくて済むと
思われ。でも標準(略

302:やりたいのに
02/10/02 19:31
思い立ってから既に一週間。
PHP+PostgreSQLの勉強をしようと頑張ってますが入り口にすら立てません・・・。
とりあえず簡単なWebアプリケーションを作成しようとしてます。
<Webサーバ環境>
Win2KServer + PHP4.2.3 + Cygwin + PostgreSQL7.2.2(Cygwinと共にインストール)

pg_connect() を使うと

Warning: pg_connect() unable to connect to PostgreSQL server: could not create socket:
要求したプロトコルと互換性がないアドレスを使用しました。 (0x0000273F)

が発生して接続ができません。

使い方はどこにでもサンプルで書いてあるような
$con = pg_connect("dbname=testdb");
という形なんですが・・・これは PHP の設定なのか PostgreSQL の設定なのか
はたまた Cygwin の設定なのか Windows の設定なのか
検討がつきません。

3日悩んだあげく、ODBC経由ならどうよ?と試したらあっさり成功。
# pg_databaseからテーブル一覧取得表示

pg_ほにゃほにゃ系の関数を使う為には何をどう設定すればいいのかひたすら調査中です。
どなたか「おい、ここチェックしたのか」とか思い当たる事項があれば
突っ込んで下さると非常に喜びます(涙)


303:nobodyさん
02/10/03 06:22
Apache,PHP4,PostgreSQL7でWEB鯖構築するやり方載ってる本あったからそれでも見れば。onLinuxだったけど。

304:nobodyさん
02/10/03 06:33
Windows上でやったことないのでアレだけど、
WindowsってUNIXドメインソケット使えないよね?

としたら、PHP<->PostgreSQLの接続はTCP/IP使わなきゃいけないはずなので、

pg_connect("host=localhost dbname=testdb");

みたいにして、あとは PostgreSQL の pg_hba.conf で
localhost からの接続の認証してやればいけそうな気がするが。


305:nobodyさん
02/10/03 06:34
つーか、エラーメッセージ見れ。
pg_connect()したときにエラーメッセージ出るだろ。


306:nobodyさん
02/10/03 06:38
スマソ。俺がカキコ見てなかった…。欝だ氏のう…。

307:やりたいのに
02/10/03 11:24
お返事多謝です。非常に喜んでます♪

>>303
 その環境で構築する本は一応見てみましたが、どーも・・・。
 Cygwin上に更にApache入れる?それともWin用のApache入れるのかなぁとか
 昨日ふと思ったりしましたが・・・IISでPHPもPostgreSQLも両方動くのに
 意味なさ過ぎだなぁ・・・とか(苦笑)

>>304
> としたら、PHP<->PostgreSQLの接続はTCP/IP使わなきゃいけないはずなので、
 ですよね。
 これに関してですが、わからないなりに調べた結果、以下の点は留意しました。
 ・Postmaster起動時に-iオプションを付ける。ポートも指定してみる。
  => pg_ctl -w -o "-i -D /usr/share/postgresql/data -p 5432" start
 ・pg_hba.confの設定をチェック
  =>以下の設定になっていた。これで問題なし??
   local all trust
    host all 127.0.0.1 255.255.255.255 trust
 ・postgreSQL側でも接続を有効にしてみる。
  =>postgresql.confで以下のように設定
  tcpic socket = true
  port = 5432

> pg_connect("host=localhost dbname=testdb");
 なるほど、ローカルホストだぜ!って明示的に指定するわけですね。

早速やってみます!ありがとうございました。


308:nobodyさん
02/10/03 19:35
大助かりage

309:nobodyさん
02/10/03 22:37 yBxgrv2T
>>282
バキュームしれ。
7.2.1使って12万レコード/日くらいのトランザクションがあるけど、
結構ディスク占有率がふくれる(溜めるだけではないため)。
数万レコードでも更新が多いならお薦めだ > 使っているdata/base
#ちなみに vacuum full 実行10分ちょい > 漏れの仕事環境

vacuume or vacuume full は頼りになるぞ。



そんな漏れん家のサーバは1回/半年で十分だ。数秒で終わる(w

310:307
02/10/04 14:40 qOvfKv6+
結果報告~。
つながりました!Apacheは入れなくてもよかったです。
これまでCygwinを手動で起動して、その上でipc-daemonをサービス起動して
次にpg_ctlでPostmasterを起動して・・・とやってたんですが
cygrunsrvというコマンドでPostmasterもサービス登録する手順をみつけ
やってみたところ、突然つながりました!
接続は以下のように行いました。ユーザも何もかも指定しました(笑)
$con = pg_connect("dbname=testdb host=localhost user=test_user password=test_user");

Postmasterの登録に使用したコマンドは以下のものです(本当は1行です)

$ cygrunsrv --install PostgreSQL
--path /usr/bin/postmaster
--args "-D /usr/share/postgresql/data -i"
--dep ipc-daemon
--termsig INT
--user postgres
--shutdown

これで、試験サーバを起動してから一々ipc-daemon+Postmasterを手動で
起動する手間もかかりませんし、いい感じです。
ただ・・・Postmasterのみ再起動する方法がわからないんですよね。
pg_hba.confとかその辺を更新した後、サーバごと再起動しないと駄目という
実に非現実的な環境になってしまいました(爆)

でもまぁ、大きく一歩前進です。多分何か方法があるんでしょうし
設定とかあるのかもしれません。調べていくことにします。

多謝多謝、多謝です~!

311:nobodyさん
02/10/06 21:27 Y+aKD2A2
すっごい初歩的な質問ぽいですが…かきこします。
xreaでPostgreSQLつかってるんですが

$hst = "localhost";
$db = "ユーザID";
$us = "ユーザID";
$pass = "パスワード";

$conn = pg_connect("host=$hst dbname=$db user=$us password=$pass") or die("接続エラー");

ってやると
Warning: pg_connect() unable to connect to PostgreSQL server: PQconnectPoll() -- connect() failed:
Connection refused Is the postmaster running (with -i) at 'localhost' and accepting connections on TCP/IP port 5432?
っていわれちゃうんだけど、解決方法わからないですか?

自分のパソコン上でやるとできるのですががが。

312:nobodyさん
02/10/07 01:33 hvZZAVT1
>311
まんまやん!
-i と一緒に走らせろよ。

pg_ctl stop
pg_ctl start -o "-i"

だな

313:312
02/10/07 01:37 hvZZAVT1
追加
DBが別サーバなら pg_hba.conf の一番下辺りの trust あたりを見る。
んで、適時追加する(アクセスするサーバへの許可)。
↑の起動オプションの追加やconfの変更が出来ないんならわからん!

314:nobodyさん
02/10/07 08:25 tYSAfVj4
つーか、ApacheとPostgreSQLが同じマシンで走ってるなら、
ふつーはUNIXドメインソケットで接続するんちゃうやろか。
-i オプションつけずに動かして。

なので、「host=$hst」つーのはいらないのでは?


315:312
02/10/08 00:18 OGtZEEu6
>>314
つ~か、「自分のパソコン上でやるとできるのですががが。」だそ?
隣のパソコンにつなごうとしてうまくいかないのでは? と思うぞ...ふつ~は。

っで、隣のパソコンから己(311)のIPがipfwとかipchainsとかから
deny|dropされていない事は確かだろうな?(w IPだけじゃなくportも...

そんなんされてたら、どうにもできんが(www

316:312
02/10/08 00:19 OGtZEEu6
をぉ!
隣のパソコン≠localhost ぢゃないか!!(w

逝ってくる...

317:nobodyさん
02/10/09 01:18 LBei1JgW
質問です。
PHPから、postgresへデータを書き込む時は、どうしたらよいのでしょうか?
今、POSTされたデータを使って、
こんな感じの関数を使って、文字をEUCにして、DBに入れてます
でも、うまくいかないんです......動くんだけど
特定の文字の時、
ここから-----------------
――――――――――――――――0-5/10―
★GAME
-------------ここまで
を入れると、0移行がきれてしまって、DBに入るんです...
0移行もいれたい!でも、うまくいかない...
なぜ?

Function beauty($sSQL)
{
//文字をEUCにして綺麗にして
$sSQL=trim(mb_convert_encoding($sSQL,"EUC","SJIS"));
$sSQL=mb_convert_kana($sSQL);
//改行キーを綺麗にして
$sSQL=str_replace("\r\n", "\n",$sSQL);
$sSQL=str_replace("\r", "\n",$sSQL);
$sSQL=ereg_replace("^(\n)+|(\n)+$","",$sSQL);
//スラッシュを綺麗にして
$sSQL=addslashes(stripslashes(stripslashes($sSQL)));
//実行
return $sSQL;
}

318:nobodyさん
02/10/09 02:48 uMeBQ3Ig
カラムの型なんでしょう?

319:nobodyさん
02/10/09 07:54
つーか、なぜ $sSQL を加工する度に echo して調べないのかと小一時間(略

320:nobodyさん
02/10/16 17:38
Apache 1.3.22 + PHP 4.2.3 + PostgreSQL 7.2.1 で、
phpPgAdmin 2.4.2 を動かそうとしたんですが、フォーム入力で
なぜか先頭の4文字分が消えてしまってSQLクエリが組み立てられず
エラーになってしまいます。

PHPは --enable-mbstring --enable-mbstr-enc-trans
--enable-mbregex で configure してあり、通常のPHPでのフォーム入力
受け渡しでは問題ないのですが、phpPgAdminのPHPスクリプトが
何か特殊なことをしているのでしょうか?


321:質問ageです
02/10/22 10:45 38ZRylkG
WEB データベースでは 1ページ毎に

 $db = DB::connect();
 $res = $db->query();
 $db->disconnect();

とするのが普通なのでしょうか?
DB オブジェクト $db をグローバル変数として
他のページでアクセスする方法はあるのでしょうか。


322:nobodyさん
02/10/22 10:47
> とするのが普通なのでしょうか?
普通。けど、ココはPHPのスレ。

323:nobodyさん
02/10/22 11:08
>>322
ええ。PHPスレと知ってて質問しています。
PHP-4.2.2 を使用してます。
PHPでグローバル変数は扱えるのかな? と思って質問しました。

現在、最初に postgres の user、password を入力させて
それを各ページに POST して使い回して connect しているんですが
みなさん、このようにして使っているのでしょうか。


324:nobodyさん
02/10/22 12:38 4eylDja6
>>323
session利用して保持すれば?

325:nobodyさん
02/10/22 15:18
pgpconnect?

326:321
02/10/22 16:15
>>324
そうですね。
各ページで connect を行う場合はそうします。

ただ、DBオブジェクト(今回は Class のオブジェクト)を
グローバル化出来れば便利(早い) だと感じたのですが、
皆さんそのようには作られてないようで...
何か、問題あるのかな?
もうちょっと、色々勉強してみます。


327:nobodyさん
02/10/22 16:43
>>321
>>325が自信なさげにつぶやいてるけど
URLリンク(www.php.net)
じゃ駄目なのかと?

328:321
02/10/22 17:21
>>327
ごめんです。
別に無視していた訳ではないです。>>325 さん。

今 Class と PEAR を使って色々勉強中でして、
「こんな風に出来ないものか?」と試行錯誤してます。
pg_pconnect は DB::connect( $dsn, TRUE ) で実現
出来るようです。
色々試してみたいと思います。


329:nobodyさん
02/10/22 20:50 bCdHvFBv
>>326
DBへの接続で、パーシステントな香具師が居たかと...
「永続的接続」だっけか?

ただし、トランザクションエラーでcommitもrollbackもやってなくて
ロック状態に陥る罠。

つ~か、↑は、デバッグ時にはまった場合の話ね。
きれいになったコードでは問題ないはずだよ。

330:教えて君
02/10/30 20:04
上の永続的とかは関係なくて、
最初にconnectしてから
"begin"を宣言しておいた後、
放置してPHP終了した場合って、
"commit"しなかったんだから"rollback"しなくても良いんですよね?
pg_closeは省略できるらしいし。
どうなの?

331:330
02/10/30 20:05
要するに"rollback"も省略できるかってことです。

332:nobodyさん
02/10/30 20:11 CX80yU9D
どこが2重カキコなんじゃボケェ!
2重カキコじゃないってば!!>ERRORさん

rollbackは今までの作業を捨ててその後で新しく作業するのに使うんですよね?
取消で終了するなら言わなくてもいいっすよね?

333:330
02/10/30 20:12 CX80yU9D
>>332
俺です(鬱)

334:330
02/10/30 20:20 CX80yU9D
URLリンク(php.lamphost.net)
> BEGINで始まり、 そのトランザクションが有効な場合はCOMMITまたは ENDで終わります。
> トランザクションが失敗した場合、 そのトランザクションはROLLBACKまたは ABORTにより閉じる必要があります。
> ラージオブジェクトリソースを閉じる前に接続リソースを閉じないように して下さい。
エラーでこけたらどうなるんすか?

335:329
02/10/30 21:02 6KbHJvYg
>334さんへ

そのつもりで漏れも
>ただし、トランザクションエラーでcommitもrollbackもやってなくて
>ロック状態に陥る罠。

つ~て書いてやった訳なんだが、
「早い」事だけを求めてトランザクションのなんたるかを
全く判っていない >>330 には、無駄だったんだと改めてわかったよ。



「永続的接続(パーシステント・コネクト)」と「トランザクション」の共存くらい
勉強&理解して欲しいよなぁ...

Oracleだろうが、DB2だろうが、MySQLだろうが、PostgeSQLだろうが、
何れは陥る罠だぞ。


漏れは無視していいが、「永続的接続」と「トランザクション処理」を
もう一度根っこから調べてくれ(;´Д`) >> 330

頼む!

336:山崎渉
03/01/15 13:47
(^^)

337:nobodyさん
03/01/18 03:13 bdZI9lM1
RedHat8.0を入れました。
PHPとPostgreSQLの接続がうまくいきません。
PHPの動作確認はOKでした。
PostgreSQLの方もcreateuserで作成したuserにてpsqlを行えます。

どこかのHPを参考にしてnobodyのユーザーを作り
テスト用のphpをたたくと

Warning: pg_connect() unable to connect to PostgreSQL server: FATAL 1: IDENT authentication failed for user "ifuku" in /home/test/public_html/test.php on line 14

といったメッセージがでます。
php.iniかpg_hba.confの設定をしないといけないのかな?と思いましたが、
なにか参考になる話を聞かせてくれませんか?

338:337
03/01/18 03:15 bdZI9lM1
エラーメッセージのうち user の箇所は nobody でやったりと
他のuserを使ったりはしています。

339:nobodyさん
03/01/18 03:35
>>337
pg_hba.confだろ。


340:337
03/01/18 03:49
>>339

そうですか
調べてみます。
ありがとうございました。

341:nobodyさん
03/02/26 18:10
どうしても2カラムで1キーになるテーブルが多いのですが、

a 102
b 2003
aとbでキー

そういう場合は

c 1002-2003
というカラムを作った方がいいですか?

342:nobodyさん
03/02/28 12:52 Gr9BwE/o
>>351
勉強し直してきてください

343:nobodyさん
03/02/28 19:20 qSGW/gfl

    ☆^~^★【新着情報追加】
   URLリンク(sagatoku.fc2web.com)
  あなたの探し物こちらで見つかります


344:nobodyさん
03/03/07 14:00 ZFWCWq3y
PostgreSQL 7.2.3からPostgreSQL7.3.2に変更したところ、
lo_unlinkを使用する箇所でエラーと言われました。
もちろん使用しなければエラーと言われません。
動作的に使用しなくても問題はないように思えます。

同じ症状になった人居ますか?

「環境」
Red Hat Linux 7.2
PostgreSQL7.3.2
php-4.2.3
apache_1.3.27




345:山崎渉
03/03/13 17:07
(^^)

346:nobodyさん
03/03/17 18:15 RRSo0s2u
新しく更新されたデータから10件のデータをテーブルから
引っ張ってくる場合、
SELECT * FROM テーブル名 LIMIT 10 OFFSET (最終行数 - 10)
になると思うんすけど、この最終行数ってどうやって求めるのか?

$sql = "SELECT * FROM テーブル名";
$db = pg_exec($sql);
$maxnum = pg_numrows($db);
で、いの?

いや、ダメだろうなぁ。なんかもったいないし?

347:nobodyさん
03/03/17 18:57 UoxJY4S2
>>346
昇順になってるカラムはないの。
あればそのカラムで逆順にソートして最初の10行を取得する。

348:nobodyさん
03/03/17 19:34 RRSo0s2u
>昇順になってるカラムはないの。
あります。

>あればそのカラムで逆順にソートして最初の10行を取得する。
なるほどぉ。。。。と言いつつ良くわかってない初心者です。
ORDER BYっての使うのか?。

要はページに最新のデータから10件ずつ表示させていくヤツが
作りたいのです。

349:346/348
03/03/17 20:14 RRSo0s2u
出来ますた。
SELECT * FROM テーブル名 ORDER BY (昇順カラム) DESC LIMIT 10 OFFSET 0
ですね。サンクスです。

350:346
03/03/18 12:18 frl1VUIP
でも、テーブルの総行数を調べたい事ってあると思うんだけど
そん時は莫大なメモリを食いそうな(あくまで漏れの稚拙なイ
メージなんだけど)

$sql = "SELECT * FROM テーブル名";
$db = pg_exec($sql);
$maxnum = pg_numrows($db);

なんて事をせにゃならんのだろうか?

あと、JOINってどんな時に使うの?

351:nobodyさん
03/03/18 12:30
>>350
count() 使え。
SQL の基礎について解説した本か、シーラカンス本買った方が良いよ。

352:346
03/03/18 14:44 frl1VUIP
>>351
サンクスでし。
SELECT COUNT(カラム名) FROM テーブル名
でしね。できますた。
シーラカンス本もマンモス本も持ってます。しかし、まだ敷居が
高すぎます。COUNTについて書いてあるのなんて1ページのほんの
少しでし。

JOINわかんねぇ。つまりテーブルを結合しる・・・と。
ブツブツ・・・。

353:nobodyさん
03/03/18 16:07 iRf6zAa0
足が短いと、どんな敷居も高く見える

354:346
03/03/18 17:11
>>353
なるほど。うまい。

『SQL Webデータベース/独習テキスト完全図解』\2800-すばる舎を
買ってきますた。出なおします。

355:nobodyさん
03/03/22 15:32
こんちわっす、2ch学園web板幼稚園の質問ですけど
教えて下さい。たのんまっす!
no int, hougaku varchar
テーブル名 hoge
no|hougaku
--|------
10|higasi
20|nisi
30|minami
40|kita
こんなテーブルがあったとします。
$houi = "kita"←仮にテーブルにある文字を設定します。
$sql = "select hougaku from hoge where hougaku = 'houi' ;";
$result = pg_query($sql) ;
if num_rows($result) !=1{
print ("そんな方角はありません。") ;
}
ここまで、$houi に代入された文字がテーブルに有るか無いか分かると思います
もしここで正しく$houiにkitaという文字がセットされたとしたら
noの40という数字が導きたいのだがどうしたらいいかわかりません、
続きのプログラムはどう書いていいのか分かりません、教えて下さい。

356:gn355my0
03/03/22 15:47
select no,hougaku from ~
じゃダメなん?

357:nobodyさん
03/03/22 15:59 jxh1CrBX
こんな過疎スレをsageで質問しても気付く人そういねぇんじゃぁ。

とりあえず、$が抜けている。
$sql = "select hougaku from hoge where hougaku = '$houi' ;";
で、noも取得するなら、
$sql = "select no,hougaku from hoge where hougaku = '$houi' ;";

あとは、
$result = pg_query($sql) ;
if num_rows($result) !=1{
print ("そんな方角はありません。") ;
}else{
$arr=pg_fetch_array($result);
echo $arr["no"];
となる。

その後、何をやりたいのかわからんので、適当に追加したのだが、
これだけのことなら無駄が多いよ。



358:357 ◆Kiss.FX29M
03/03/22 16:02
うひゃ、ageてもた。

>>356
noの取得が目的なら、
select no from ~
で、いいよねぇ。

359:nobodyさん
03/03/22 16:22
>357
できましたありがとう

360:nobodyさん
03/03/25 22:15 8MjhOhZv
perlでDBD::Pg使ってました。
結果を変数にぶち込みたいんだけど
$結果 = $db->selectrow_array("SQL文");
みたいに1行で片付けたい。
PHPだとどうすればいいんかな?

良くわからんのでとりあえず
$rs = pg_query($con, "SQL文");
$結果 = pg_fetch_result($rs,0,0);
にしてるんだけど何か変な気がするし。
昨日PHPはじめた漏れに誰か教えてクレイ。

361:nobodyさん
03/03/26 01:04
>>360
PEARのDB使え。
URLリンク(pear.php.net)

362:nobodyさん
03/03/26 18:48 +smbNkro
複数のファイルの値をひらいて
1回の起動で1ファイルに1回その値をINSERT INTOで
データベースに流し込んで
それを複数回繰り返しているPHPがあるんだけど
なんかメモリが急に100%になってすまう?

363:nobodyさん
03/03/27 13:31
>>362
メモリが100%になるってなんだよ。今まで半分しか使ってなかった
メモリがやっと100%使えるようになったって意味か?よかったな。

で、その100%って何を見て確認したの?


364:362
03/03/28 11:54 PjWv+k5d
>で、その100%って何を見て確認したの?
phpsysinfoってPHPなんすけど。見やすいのでコレで確認すてます。
URLリンク(phpsysinfo.sourceforge.net)
ひどくなってくるとスワップまで食い尽くしてメモリオーバーになっちゃう。
しょうがないのでリブート(まだローカルのテストなんでいいけど・・)。
なんか違う方法を考えよう。
CSVのデータを大量にDBに追加する時って何でやってますか?。皆様は?

365:362
03/03/28 12:08
ああ。COPYですればいいかぁ。
でも、COPYだと一度ファイルに落とさなきゃならないかぁ。
ブツブツ独り言でし。sage

366:nobodyさん
03/03/28 15:33
>>365
何が問題なんだかよくわからんが、とりあえずLinuxなら
URLリンク(www.math.kobe-u.ac.jp)
でも見れ。

367:362
03/03/28 16:41
>>366
おお、すばらすいページだ。こんなん探してますた。
サンクスでし。
なるほどぉ、LINUXのメモリ管理ってのはこうなってたのか。
勉強になりますた。

368:nobodyさん
03/04/16 18:58 0S8YCSoo
PHP4+PostgreSQLで、新しくWEBを作る時、
最近ではPEARとPHPlibはどっちがお勧めでしょう?

気分的には新しいPHP4標準?のPEARがいいような
気がするんだけど、PHPlibの方がなんとなく使い勝手が
よいような気がするんですが・・・。

それと、どちらも詳しいリファレンスが乗ってる書籍とか
あったら教えてください。

369:nobodyさん
03/04/16 21:12 RoExleB5
6.xインスコしてある鯖使ったんだけど、
「JOINはまだ実装されていません」と言われてがーん
最新版にアップデートしたら、
「datetimeって型はありません」
といわれ、コードをすべて書き直した。
あーめんどくさ

370:nobodyさん
03/04/17 01:15
>>368
最近はPEARしか使ってないなぁ
ところでphplibってまだメンテされてるの?

371:368
03/04/17 09:56
>370
PHPlibはここに↓2003年1月13日のバージョンがあるようです。
URLリンク(sourceforge.net)
メンテされてるかは不明・・・。

手元にある「PHP×PostgreSQLで作る最強Webシステム」
(2003年1月9日初版:石井達夫著)の本には、

 PEARは発展中のシステムで、ドキュメントもまだまだ整備が必要
 (logout(),listUser()・・・などの関数はその存在すら記載されてない)

と書いてあるんです。PHPlibのマニュアルよりは読みやすいですけど。

PHP5がでるかもしれないっていうときに、PHP3の物を使い始めるっていうのも
どうかと思うが、PHPlibの方が当面は使い勝手がよいなら、こっちの選択も
アリかな、、、と迷ってる次第です。。。

それぞれ使ってる方の意見なぞ、きけるとうれしいです。


372:山崎渉
03/04/17 11:57
(^^)

373:nobodyさん
03/04/17 23:31 38lUA/N9
php_pgsql.dll下さい。
何処に落ちてますか。

374:373
03/04/17 23:37
やっぱり今のは無かったことに。

375:佐々木健介
03/04/18 00:19
     ______
    /_      |
    /. \ ̄ ̄ ̄ ̄|
  /  /  ― ― |
  |  /    -  - |
  ||| (5      > |
 | | |     ┏━┓|   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| | | |     ┃─┃|  < こんなサイトを見つけた
|| | | |  \ ┃  ┃/    \  正直、スマンカッタ
| || | |    ̄         \_________
URLリンク(freeweb2.kakiko.com)

376:動画直リン
03/04/18 00:26 s9K3wIjP
URLリンク(www.agemasukudasai.com)

377:nobodyさん
03/04/19 16:04
あのさ、例えば従業員の名前やら住所やらが入ってる
データベースをブラウザから管理出来るようなシステム
をPostgresQL + PHPで作るとしますよね。

従業員の数が多い場合は複数のページに分割して表示
するような形になると思うけど、例えば従業員が82人
いて、1ページに10人ずつ表示するとすると、メイン
ページに[1ページ目][2ページ目]..[9ページ目]みたい
なリンクを表示させます。で、この[9ページ目]までと
いうのを計算するのに普通はどういう処理をするので
しょうか?

自分はわざわざ
$sql = "SELECT * FROM hoge;
$rec = pg_query($conn,$sql);
$line = pg_num_rows($rec);
としてるんですが、なんだか非効率な気がします。。




378:nobodyさん
03/04/19 16:17
LIMIT と OFFSET を使う。

379:nobodyさん
03/04/19 16:48
>>378
各ページを表示させるときはそうなんですけど、全件数が分からないと
各ページへのリンクを表示させるところでどう処理すればいいのかな
と思ったんです。

380:gn355my0
03/04/19 17:58
count()

381:名無しさん@Emacs
03/04/19 19:09
>379
100件表示するページなら、LIMIT 101とする。

100件(以下)が返ってきたら次のページは無い。
101件返ってきたら次のページに続く。

当然、表示するのは100件までよ。


382:名無しさん@Emacs
03/04/19 19:10
ちなみに、全件数を知りたいなら、INSERTやDELETEにトリガを仕込んで
カウンタを別に持つ方が無難。更新の少ないシステムならね。


383:nobodyさん
03/04/19 22:19 3QKaD4h9
timestamp型をepoch秒で返す関数ってありませんか?

384:山崎渉
03/04/20 05:58
   ∧_∧
  (  ^^ )< ぬるぽ(^^)

385:nobodyさん
03/04/20 07:17 JR0rvjcu
このスレ今日はじめて見ましたが、実務経験豊富な方が
大勢住んでいらっしゃるようですね。

スレ違いかもしれませんが、PHP+PostgreSQLのシステム
なので質問させてください。

100画面程度の業務WEBアプリを作ろうとしています。
私がDBと画面仕様を書いて業者2人にPHPで
コーディングを担当してもらう予定です。

そこで質問ですが、WEBアプリの画面設計仕様書には、
どんな項目を書くべきでしょうか?
画面に表示する項目はもちろんですが、POSTやGETで渡される
パラメータ、デザイナに引き渡すテンプレート変数、画面間で
引き渡すセッション変数、それらをアンレジストするタイミング、
などなど、どのように仕様書にまとめたらいいのでしょう?



386:名無しさん@Emacs
03/04/20 12:54
>377
それから、カウントするために

SELECT * FROM hoge;

すると、すべてのカラムが返されてくるので非効率的(ネットワーク的にも)。
数を数えるなら、どこかひとつのカラムだけにするか、

SELECT COUNT(*) FROM hoge;

として、バックエンドに数えさせるべき。


387:nobodyさん
03/04/20 15:04
>>386
レスサンクスです。とりあえずその方法に変更しておきました。
>>382
の方法ってのは、カウンタ用のテーブルを作成しておいて
他のテーブルが更新された時にそのカウンタを更新するよう
にトリガを仕込むってことですよね?更新頻度が多いと>>386
のほうが効率よいですか?

388:nobodyさん
03/04/20 15:34
>>387
自己レスですけどUPDATEは頻繁に行われるがINSERTと
DELETEはあまりないので、トリガ仕込んでみようと
思います。

389:nobodyさん
03/04/20 23:37 xyBrUgxr
Win2000proでPostgreSQLのインストール設定を誰か教えてください。

いまのところ、Cygwinをインストールし、Postgresql・cygipcを解凍した
とこまでしかできません。そのあとの設定がうまくいかず困っています。

usr/local/src/postgresql-7.3の
./configureコマンド入力後、

checking build system type... i686-pc-cygwin
checking host system type... i686-pc-cygwin
checking which template to use... win
checking whether to build with 64-bit integer date/time support... no
checking whether to build with recode support... no
checking whether NLS is wanted... no
checking for default port number... 5432
checking for default soft limit on number of connections... 32
checking for gcc... no
checking for cc... no
configure: error: no acceptable C compiler found in $PATH
と表示されます。ここからがわかりません。
どうか教えてください。



390:_
03/04/20 23:38
( ´∀`)/< 先生!!こんなのを見つけました。
URLリンク(web2001.kakiko.com)
URLリンク(www.web2001.kakiko.com)
URLリンク(web2001.kakiko.com)
URLリンク(www.web2001.kakiko.com)
URLリンク(web2001.kakiko.com)
URLリンク(www.web2001.kakiko.com)
URLリンク(web2001.kakiko.com)
URLリンク(www.web2001.kakiko.com)
URLリンク(web2001.kakiko.com)
URLリンク(www.web2001.kakiko.com)

391:nobodyさん
03/04/20 23:48
configure: error: no acceptable C compiler found in $PATH
エラーの内容が分かんないようだと、Win nativeなヤツを使うほうがいいかと。

392:nobodyさん
03/04/23 10:59
全件数をカウントする関数を作りたいんですけど、
今 employee1,employee2 というテーブルがあります。
次に counter というテーブルを作成して、そこに
employee1,employee2という列を定義し、ここに全件数
をカウントした数字を入力したいと思ってます。

CREATE FUNCTION count_table(text) RETURNS integer AS '
DECLARE
counters integer;
BEGIN
counters := SELECT COUNT(*) FROM $1;
UPDATE counter SET $1 = counters;
return counter;
END;
' LANGUAGE 'plpgsql';

というふうに関数を定義して、select count_table('employee1')
を実行すると
ERROR: parser: parse error at or near "SELECT" at character 9
と怒られます。どう修正したらよいでしょうか?

393:ななし
03/04/23 19:12
>392
SELECT INTO

394:nobodyさん
03/04/24 09:51
>>393
SELECT INTO counters COUNT(*) FROM $1;
でいけますた。ありがとう。

395:nobodyさん
03/04/24 10:45
CREATE TABLE temp(
id text,
name text);

CREATE TABLE temp_counter(
temp integer);

CREATE FUNCTION temp_counter() RETURNS OPAQUE AS '
DECLARE
counters integer;
BEGIN
SELECT INTO counters COUNT(*) FROM TG_ARGV[0];
UPDATE temp_counter SET TG_ARGV[0] = counters;
END;
' LANGUAGE 'plpgsql';

CREATE TRIGGER temp_trigger
AFTER INSERT OR DELETE
ON temp
FOR EACH ROW
EXECUTE PROCEDURE temp_counter('temp');

INSERT INTO temp VALUES ('hoge','moga');
とすると
WARNING: Error occurred while executing PL/pgSQL function temp_counter
WARNING: line 4 at select into variables
ERROR: parser: parse error at or near "$1" at character 24
というエラーが出てしまうんですが。。なんでですか?
質問ばっかですみません。


396:しろ
03/04/24 17:40
テーブル名指定したいなら、引数じゃなくてTG_RELNAMEが使えると思うけど?
TG_RELNAMEはname型だけどね。

それと気になるのがtempというテーブル名。

何がやりたいのかよくわからないが、tempは一時テーブルの名前なんだけど
わかってますか?セッションが終わると自動的に削除されちゃうけどいいの?

マニュアル読んだほうがいいよ?ここ↓
URLリンク(www.postgresql.jp)
functionはここ↓
URLリンク(www.postgresql.jp)
結構判りやすいと思うんだけど・・・。


397:しろ
03/04/24 17:41
396は395のレスです。スマソ

398:nobodyさん
03/04/24 20:13
>>396
マニュアルは一通り目を通しました。あとtempというテーブル名
は例にあげただけで実際は違う名前です。まぎらわしくてすみま
せん。関数の部分を下記のように変更しました。

SELECT INTO counters COUNT(*) FROM TG_RELNAME;
UPDATE temp_counter SET TG_RELNAME = counters;

でもやはり insert するときに
WARNING: Error occurred while executing PL/pgSQL function temp_counter
WARNING: line 4 at select into variables
ERROR: parser: parse error at or near "$1" at character 24
というエラーが出てしまいます。そもそも"$1"なんて使ってない
んですが。。

399:しろ
03/04/25 11:17
>398
> あとtempというテーブル名は例にあげただけで実際は違う名前です。
> まぎらわしくてすみません。

という事は、name,とかidとかいったフィールド名も使ってないわけですか?
ホントに紛らわしいです・・・。

> マニュアルは一通り目を通しました。
・・・
> そもそも"$1"なんて使ってないんですが。。

もう一度じっくり読んだほうがいいと思います。

$1については下記に書いてあります↓
URLリンク(www.postgresql.jp)
要するにトリガで指定している引数の部分を指してると思います。

トリガファンクションについても、もう一度よく読んだほうが良いです。
RETURN とか EXECUTE とか。

もう一つ、これは別の方法ですが、SELECT INTO使わなくても、
カウント数はサブクエリを使えば一つのクエリで済むと思います。
 例:UPDATE テーブル名 SET 列名 = (SELECT COUNT(*) FROM テーブル名);

では頑張ってください。


400:nobodyさん
03/04/25 22:48
>>399
レスどうもです。あと一歩というとこまでなんとかこぎつけました。
CREATE TRIGGER my_trigger
AFTER INSERT OR DELETE
ON my_table
FOR EACH ROW
EXECUTE PROCEDURE my_counter();

CREATE FUNCTION my_counter() RETURNS OPAQUE AS '
BEGIN
UPDATE my_counter_table SET my_table = (SELECT COUNT(*) FROM my_table);
RETURN NULL;
END;
' LANGUAGE 'plpgsql';

とすることで成功しました。
で、本当にやりたいことなんですが

401:nobodyさん
03/04/25 22:56
my_counter_tableというテーブルで複数のテーブルの全件数を
管理したいのです。たとえば'hoge','moga','2ch'というテーブル
の全件数を管理したい場合、my_counter_tableに'hoge','moga','2ch'
という列を定義して、そこに全件数を記録する感じです。
そのあと各テーブルにトリガを作成して同じ関数を呼び出します。
そのときに関数を
UPDATE my_counter_table SET TG_RELNAME = (SELECT COUNT(*) FROM TG_RELNAME);
のようにすれば1つの関数を定義するだけで済むかなと思った
んです。でも上記のようにするとINSERTを実行する時に
ERROR: parser: parse error at or near "$1" at character 26
というエラーが出てしまうのです。トリガを
EXECUTE PROCEDURE my_counter('hoge');
のように定義して、関数を
UPDATE my_counter_table SET TG_ARGV[0] = (SELECT COUNT(*) FROM TG_ARGV[0]);
としても同じエラーが出ます。こういうふうには使えないの?

402:nobodyさん
03/04/26 00:58
動的問い合わせには EXECUTE を使え。
いま環境ないからてきとうだけど、

EXECUTE ''UPDATE my_counter_table SET ''
|| quote_ident(TG_RELNAME)
|| ''=(SELECT COUNT(*) FROM ''
|| quote_ident(TG_RELNAME)

でどうよ。

URLリンク(www.postgresql.jp)
23.5.4. 動的問い合わせの実行

も見れ。

403:nobodyさん
03/04/26 12:05
>>402
CREATE FUNCTION temp_counter() RETURNS OPAQUE AS '
BEGIN
EXECUTE ''UPDATE my_counter_table SET ''
|| quote_ident(TG_RELNAME)
|| ''=(SELECT COUNT(*) FROM ''
|| quote_ident(TG_RELNAME)''
|| '';
RETURN NULL;
END;
' LANGUAGE 'plpgsql';
こうしてみたんですが
parser: parse error at or near "'
|| '" at character 110
というエラーが出ます。
シングルクォーテーションは '' で表す。
テーブル名や列名は quote_ident 関数に通さないといけない。
ということなので上記の文は
UPDATE my_counter_table SET 'hoge' = (SELECT COUNT(*) FROM 'hoge'
という文字列を実行するってことですよね?
||の意味がよく分からないので、そこに問題がある
気がします。ドキュメントを読んでもダメでした。
||はどういう意味なんですか?

404:nobodyさん
03/04/26 18:37
>>395
「業者2人」がたいへんそうですね

405:402
03/04/27 21:51
>>403
最後のほうが微妙にちがうかも?

CREATE FUNCTION temp_counter() RETURNS OPAQUE AS '
BEGIN
EXECUTE ''UPDATE my_counter_table SET ''
|| quote_ident(TG_RELNAME)
|| ''=(SELECT COUNT(*) FROM ''
|| quote_ident(TG_RELNAME)
|| '')'';
RETURN NULL;
END;
' LANGUAGE 'plpgsql';

|| は文字列の結合です。

406:nobodyさん
03/04/27 23:08
>>405
上手くいきますた!
長年の夢が叶った感じです。どうもありがとう。

407:nobodyさん
03/04/29 11:51
URLリンク(itb-tech.itboost.co.jp)
PostgreSQLでセッション変数管理したいな
と思ってたんですけど、ここ見たらmysql
の方がいいかなと思ってしまいました。
みなさんはどうしてます?

408:nobodyさん
03/04/29 13:04
>>407
対象pgsqlのバージョンが古そうだな。今は稼動しながらvacuumできる。
ま、セッション管理のためだけなら、軽いと言われるMysqlの方がいいかもね。


409:nobodyさん
03/04/29 16:42
>>408
今はPostgreSQLだけ導入しててセッション管理は/tmpでしてます。
セッション管理のためだけにmysql導入するの躊躇してましたが
稼働しながらvacuum出来るならちょっと試してみます。レスどうも
です。

410:nobodyさん
03/05/07 16:15 o2l25maR
文字コードに関連して教えて下さい。
レンタルサーバー上で動くPHP+PostgreSQLのプログラムを書く際、
Windows上のEditorは何が便利でしょうか?
その文字コードは、EUCで書いておけば問題無いでしょうか。
秀丸やWZだとソースの読み込み時に一々EUCを選択しないと
いけないのですが、使い方がおかしいでしょうか。

あと、参考書を見ると
mbstring.http_input
mbstring.http_output
の設定等が書いて有りますが、レンタルサーバーを使う場合は
特に気にせずEUCで書いておけば、httpでのやりとりやブラウザ表示
は特に問題は起きないと思えば良いですか?

取りあえず簡単にレンタルサーバーからPHP+Postgreで文字を
書き出して、IEで見たところ正しく表示されてるようでした。


411:しろ
03/05/07 16:30
>410
秀丸とPeggy Proつかってまつ。

> 秀丸やWZだとソースの読み込み時に一々EUCを選択しないと
> いけないのですが、使い方がおかしいでしょうか。

自分もこれ面倒だったんで、以下のようにしました。

PHPファイルの関連付けの設定で
OPENの「アクションを実行するアプリケーション」の箇所に
/fe
を入れてやると、PHPファイルだったらEUCで開くようになります。
 ex.C:\Hidemaru\Hidemaru.exe /fe %1

他にももっとマシなやりかたあるかもしれないけど。

412:nobodyさん
03/05/07 17:04
「その他」「動作環境」「編集」「文字コードの自動認識をする」「詳細」

413:410
03/05/07 19:15 o2l25maR
>>411,>>412さん、ありがとうございます。
なるほど、出来ました。
それから、Peggy Proってのを探して使ってみました。
これいいですね。411さんはどっちを使ってますか?

414:nobodyさん
03/05/07 19:34 n2ggMpEP
どうすりゃいいの?
      /        /       |    ヽ           \
 ∧ ∧/         /      |     ヽ          ∧\∧
( / ⌒ヽ        /         |       ヽ         ( / ⌒ヽ
 | |   |         /         |      ヽ           | |   |
 ∪ / ノ         /        |        ヽ         ∪ / ノ
  | ||   ミ    /            |           ヽ       / / /
  ヽ_)_)     ∧/∧         |        ∧ヽ∧  彡  しl_ノ
        ( / ⌒ヽ        |        ( / ⌒ヽ
         | |   |  ミ   ∧ |∧  彡    | |   |
         ∪ / ノ     ( / ⌒ヽ        ∪ / ノ
          | ||        | |   |         / / /
          ヽ_)_)      ∪ / ノ        しl_ノ
                   | ||
                   ∪∪
日本ロジテム(一部上場、みずほの融資先)の
子会社せいも素(みずほの融資先)でサービス残業の過労による自殺者が出た。
URLリンク(www.samos.co.jp)<)l50
スレリンク(company板)l50

415:しろ
03/05/07 19:44
>413
「どっち」とは??
使っているのは「秀丸とPeggy Pro」です。

秀丸と、Peggy Proは適当に使い分けしてて、大体両方起動してます。
Peggy Proか、Peggyかきいてるなら、使ってるのはPeggy Proです。

Peggy Proはシェアだけど、他の色んな言語に対応してるし、
高機能なので結構重宝してまつ。

416:nobodyさん
03/05/07 19:48 JylB+nG2
●貴方に代って恨み晴らします● 【復讐・特殊業務】
--------●○●別れさせ屋●復讐代行業務●○●----------
●騙された・裏切られた・弄ばれた・逃げられた・捨てられた・
相手に誠意が無い・異性問題・家庭内暴力・不倫疑惑解明・人間関係・金銭トラブル★ URLリンク(www.blacklist.jp)
別離工作・情報収集・トラブル対策・ボディガ―ド・等々!
●真剣にお悩みの方、安心してご相談下さい。解決へ導きます★
□■各種データ・電話番号調査・住民票・戸籍謄本など調査■□
   URLリンク(www.blacklist.jp)
【注意】ジャンプしない場合はURLをコピーしてファイルから開いて下さい●○● URLリンク(www.blacklist.jp)
--------------------------
◆リンク◆復讐現場密着24時◆ URLリンク(www.123456789.jp)


417:413
03/05/07 23:41
>>415しろさん、遅レスすみません。
Peggy Proが便利そうなんで、PHPソース書きなら秀丸の出番が
無いかなと思ったもので、、、、聞いてみました。

418:nobody
03/05/08 04:11 NOzEFrdh
PostgreSQLを使ってみようかと思っています。Webで少しだけかじってみたの
ですが、Apache+PHPと一緒に利用する際は、Apacheのインストール>Postgre
のインストール>PHPのインストール(configureするときにPostgreを明示)
としますよね。

ApacheがSuexec付きのnobodyで動いています。(--suexec-docroot=/home 付
きでconfigure)
/home/hoge以下をhoge.comで運用する、といった場合Postgreを走らせるユー
ザーをhogeとして
# chown -R hoge /usr/local/pgsql/
して
# /usr/local/pgsql/bin/createuser --createdb --no-adduser nobody
とすればいいのでしょうか?それともPostgreを走らせるユーザーはpostgre等として別に作るべきでしょうか。
apacheのユーザーとPostgreのユーザーの関係がどうもわからないのです。

また、この辺りの基礎が分かってApacheのことも書いてあるお勧めの本がありましたら是非教えて下さい。

419:動画直リン
03/05/08 05:10 R/vnapw0
URLリンク(homepage.mac.com)

420:しろ
03/05/08 10:24
>417
Peggy Pro一本でも全然問題ないと思いますよ。好みの問題ですね。
自分は単に秀丸にマクロ入れてるのがあるので
それ使う時だけ秀丸使ったりとかです。

>418
PostgreSQLの管理用のユーザは別に必要。

Windows用だけど
 「はじめてのPostgreSQLプログラミング」
判りやすかったです。それとか、
 「PHP×PostgreSQLで作る最強Webシステム」
こちらの方が少しレベルが上かも知れませんが
とても参考になりました。

あとは「PHP4徹底攻略」あたりかな。
赤マンモスの方はPDFにもなってる↓
URLリンク(www.net-newbie.com)


421:418
03/05/09 18:21 STzTzCJD
>>420
早速本屋に逝ってきました。参考になりますね。
また分からないことがあればお世話になるかもしれません。
その時はよろしくです。ありがとうございました。

422:nobodyさん
03/05/11 01:35 6HQj9LIx
従業員の名前、住所、メールアドレス、電話番号をDBで
管理していて、普段はメールアドレスの検索が主な操作
な状況です。こんな場合、メールアドレスだけ別テーブル
に保存して検索するのと SELECT mail FROM hoge みたい
に検索するのってどっちが効率いいんですか?

423:nobodyさん
03/05/11 01:36
えーと、indexを貼るのもよろしいかと。

424:nobodyさん
03/05/11 02:21
>>423
CREATE INDEX ってやつですか?

425:nobodyさん
03/05/11 02:27
従業員の管理ったってそんなに大人数でもないだろうに

ポスグレでも20万件程度までならサクサク動くから

426:nobodyさん
03/05/11 03:59
小規模なとこで働いてる限りあんまり
チューニングってのは考えなくていい
んですかね。やっぱり。

427:nobodyさん
03/05/11 04:14
>426
Accessでどうのこうのといったレベルなら。
小規模でもオンラインゲームのマップ情報とかDBに載せてたりすると
チューニングが肝です。

428:nobodyさん
03/05/12 06:11
postgresもObjectBrowser
みたいなもんがないのかねー

429:nobodyさん
03/05/12 11:45
これじゃダメ?

URLリンク(www.hi-ho.ne.jp)

430:nobodyさん
03/05/12 15:41
7.2.3でDBのエンコーディングをEUC_JPにしてスキーマをつくって、
JDBCからアクセスするアプリをつくってみたんですが、~とかマルイチなどの
文字が化けてしまうんですよね。。どうにかなりませんか?
ポスグレはShift_JISエンコーディングはサポートしていない??


431:428
03/05/13 14:33
>>429さん
ありがとうございました。
なんなものがあったなんて知らなかったよ




432:nobodyさん
03/05/15 11:09 LGr+4aCV
>>429
ここのページのDB利用実態調査が面白い。
特に、MyとPostへのLOVE度、ワラタ。

433:bloom
03/05/15 11:10 fs87NLJj
URLリンク(homepage.mac.com)

434:nobodyさん
03/05/16 03:28 3cK7BkGM
$sql = "SELECT passwd FROM customer_auth WHERE login = '".$login."'";
このSQL文を実行すると条件に1つもマッチしない場合エラーになりますよね。
@$rec = pg_query($conn,$sql);
if (!$rec){
exit("そのようなユーザーは存在しません。もう一度確認して下さい。");
}
としても $recがTRUEになってるみたいで上手くエラー処理をしてくれません。
何かよい方法ないでしょうか。

435:nobodyさん
03/05/16 03:36
>>434
エラーにはならんだろう。
if(!pg_num_rows($rec)){...
でどうよ。

436:nobodyさん
03/05/16 10:24
あ、なるほど。データがなくても別にエラーにはならない
訳ですね。それで上手くいきました。ありがとう。

437:田中
03/05/16 12:32 shMd76bE
先ずはココを見てください!
本当に、すごいです。
URLリンク(www.c-gmf.com)

438:山崎渉
03/05/22 02:02
━―━―━―━―━―━―━―━―━[JR山崎駅(^^)]━―━―━―━―━―━―━―━―━―

439:山崎渉
03/05/28 17:19
     ∧_∧
ピュ.ー (  ^^ ) <これからも僕を応援して下さいね(^^)。
  =〔~∪ ̄ ̄〕
  = ◎―◎                      山崎渉

440:nobodyさん
03/06/03 17:33 AuMlkjoB
・・・
$deldata = "IN (" . implode($_POST['del'],",") .")";
PHPlibを使ってPostgreSQLのデータを削除するものを作っています。
以下のような感じに書いて削除はできるのですが
-------------
・・・
$deldata = "IN (" . implode($_POST['del'],",") .")";
$del_query = "DELETE FROM vf_employee WHERE emp_id ".$deldata;

# データ削除
@$del_data_set = $db->query($del_query);
print(pg_affected_rows($del_data_set)); //-->ここ
・・・
-------------
削除した件数1件あっても、 pg_affected_rowsが0になってしまいます。
ちょうど、>435と同じように、件数のチェックをして
エラーチェックをしたいのですが、削除の場合の件数は
取得できないのでしょうか?

何か間違ってるでしょうか。。

441:440
03/06/03 17:34
>440 の2行目まではコピペのミスです、スミマセン;

442: 
03/06/16 11:17
最近の PostgreSQL って pg_atoi() のチェック厳しくなりましたよね。
おかげで

$SQL = "UPDATE table SET seq = '$seq'";

で $seq が空の場合にエラーになるようになってしまいました。

というか他所の会社が作ったシステムのメンテを引き受けたのですが、
恐らく register_globals = on の状態を想定していて、
$seq があってもなくても通るようにと考えたんではないかと思います。

↑のようなパターンが随所にあって、
手動での修正はかなり厳しいものがあります。
何かいい方法はないでしょうか?

443:nobodyさん
03/06/19 00:43
MySQLとPostgreSQLの違いって何ですか~
初心者で御免


444:nobodyさん
03/06/24 11:30 s+ewonQw
レンタルサーバーでPHP+Postgre使ってます。(WebProg経験浅いです)

データベースのテーブルデータをフォルダに移したいのですが
select * from テーブル名 into outfile '/usr/home/xxxx/ファイル名'
と言うsql文は普通に使えるはずでしょうか?
どうしてもparse error at or near "into"が出ます。
単純なミスでしょうか。よろしくお願いします。

445:nobodyさん
03/06/24 12:22
>>444
URLリンク(www.postgresql.org)

446:444
03/06/24 13:02
>>445どうもです。
ひぇ~、読んではみたのですが、、、よく分かりませんです。
PostgreSQLとMySQLで使えるSQL文は結構違うのでしょうか?
取りあえず私が検索した範囲ではselect * into outfileで使っているのは
MySQLの方でした。
他の方法でも良いのですがテーブルデータをフォルダに書き出すには
どうすれば良いでしょうか?重ねてよろしく。

447:nobodyさん
03/06/24 14:18
>>444
URLリンク(www.postgresql.jp)

448:444
03/06/24 15:00
>>447何度もすみません。
どこかのQ&Aにもレンタルサーバーでは普通無理と書いて有ったのですが
実際COPYを使ってみると
You must have Postgres superuser privilege・・・
と出てしまいます。

本当に何度もすみませんが、
postgreではselect into outfileは使えない(?)。
COPYはそれなりの権限が無いと使えない。
と言うことでしょうか、、、


449:nobodyさん
03/06/24 15:58
>>448
COPY table TO stdout ...

450:444
03/06/24 17:49
>>449
すみません、かなり調べたつもりなのですが、、、
stdoutへ出力されたデータはどこに有るのでしょうか。

そこを何とかもう一度お願いします(汗;

451:名無しさん@Emacs
03/06/24 19:06
つか、ファイルに出力するなら、

COPY table TO '/tmp/file.txt';

だろ。


452:444
03/06/24 19:11
>>451さん、どうも。
448にも書きましたが、(詳しく書くと)
ERROR: You must have Postgres superuser privilege to do a COPY directly
to or from a file. Anyone can COPY to stdout or from stdin.
Psql's \copy command also works for anyone.
と出ます。
確かにstdoutを使えと書いてるようですが、使い方が分からなくて、、、

453:nobodyさん
03/06/24 19:19
phpPgAdminでダンプ表示させたのをコピペはだめ?

454:444
03/06/24 19:32
>>453さん、どうも。
phpPgAdmin、ちょっと調べてみましたが、これが用意されてるところでしか
使えないのですよね??
私の使ってるレンタルサーバーにも簡単なGUIツールが有りますがダンプは
できません。
また、プログラムで自動実行したいので、かえってGUIは不便なんです。

455:451
03/06/24 21:06
>452
PostgreSQLのSQLコマンドであるところの COPY コマンドと
psqlコマンドで使う \copy コマンドは別モノでつ。
COPYコマンドはバックエンドサイドでファイルに落としまつ。
\copyコマンドは、クライアントサイドでファイルに落としまつ。

COPYコマンドは言われている通り、バックエンドのsuperuser権限が
必要ですが、\copy コマンドでは必要ありません。psqlで

\h copy

と、

\?

とすると、それぞれの説明が出まつ。

結論としては「\copyを使え」ってことで。


456:444
03/06/24 23:28
>>455さん、どうも。
なんとなくしか分かってないのですが、私の使ってるレンタルサーバー
では「psqlは使えません」とのことでした。
皆さん色々と教えて頂きありがとうございます。
もう少し勉強して出直します。


457:名無しさん@Emacs
03/06/25 01:48
>454
多分、CGIみたいにブラウザに表示させることにして、
テキストベースのブラウザ(w3mとかlynx)使ってファイルに落とすのが一番早い。

と思う。結論として。


458:444
03/06/25 10:07
>>457さん、どうも。
なるほど「泥臭いけど何か問題ある?」と言うような方法ですね。
奥の手に取っておきます。

459:nobodyさん
03/06/26 09:56
>>458
ファイルの書き込み権限があれば以下の方法が使えるかも?です
例えば、CGIをテストするためにスクリプトとかを転送
できてるのであれば、fopen の"w"でファイルに書けます
#!/usr/local/bin/php -q
<?php
include("dbconnect.inc");

 $db = new DbConnect();
 $keyword = "php";
 $file = $keyword . ".txt";

 if(!($o = fopen($file, "w"))) {
  print "$file open 失敗\n";
  exit(1);
 }

 $sql = sprintf("SELECT name FROM t WHERE keyword='%s'", $keyword);
 $rs = $db->doQuery($sql);

 for($i=0; $i<pg_numrows($rs); $i++) {
  $str = sprintf("%s\n", pg_result($rs, $i, "name"));
  fwrite($o, $str);
 }
 fclose($o);
 $db->doClose();
?>

460:458
03/06/28 11:12
>>459さん、どうもです。
遅レスすみません。でも、できそうな気がします。
(まだ分かってないところも有りますが)やってみます。
ありがとうございました。

461:nobodyさん
03/07/04 12:48 Hr/HESMY
現行のPHPマニュアルに
> 同じconnection_string引数で2回 pg_connect()関数がコールされた場合、新規の接続 はオープンされません。
とありますが、実験してみるとまさにそのとおりの動作で困っています。

固有のDB接続がつくれないとトランザクションが破綻するかとおもうのですが、なにか勘違いしてますか?

462:nobodyさん
03/07/04 14:13
それ、pg_pconnect()の説明じゃない?うちのまぬあるが古いのかな。
それとトランザクションとは全く別次元の話。

おそらく トランザクションの意味を勘違いしていると思われ。

463:461
03/07/04 15:01
接続が共有だとトランザクションの合間に
他のPHPセッションからのクエリが割り込む可能性があるとおもうので<ここが勘違い?
問題ありということです。

URLリンク(www.php.net)
マニュアルはここから読めるんですが、英語マニュアルでも同様でした。

464:自己レス
03/07/10 18:21
>>463
pg_connect(connection_string, PGSQL_CONNECT_FORCE_NEW);
で解決しました。

465:nobodyさん
03/07/11 23:10 P/TCYNuE
ポストグレスってクエリー実行に対する
エラーコードがないって本当ですか?

(しょうがないので)
今はpg_execの返り血がFALSEなら
pg_errormessageでエラー文字列を
とって、パターンマッチングして分岐、
みたいなキタねぇコードを書いてます。

チェックをプログラム側に持たせるか
DBの制約に持たせるかっていう設計
方向のレスも歓迎。


466:nobodyさん
03/07/11 23:29
> エラーコードがないって本当ですか?
本当でつ。
以上。

467:nobodyさん
03/07/11 23:37
>>466
ドモでつ。


468:山崎 渉
03/07/15 11:07

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄

469:nobodyさん
03/07/18 15:24
Warning: pg_pconnect() unable to connect to PostgreSQL server: FATAL 1:
Sorry, too many clients already in

上記のエラーの対処の仕方を教えてください。
あんまり詳しくないので聞きたいことがあれば調べて書きます。
お願いします

470:nobodyさん
03/07/18 15:49
同時接続数を増やす。

471:nobodyさん
03/07/18 15:59
今postgresql.confを見たんですが
全部#でコメントアウトされてるみたいです(^^;
ちと調べて接続数を増やしてみます

472:nobodyさん
03/07/27 01:15 TsfwKHg5
ラージオブジェクトの格納、引出(表示)、削除、などのやり方について
詳しいサイトあったら教えて下さい。

自分なりに探したのは、
URLリンク(homepage2.nifty.com)

URLリンク(www.geocities.co.jp)
↑ここくらいですが、削除のやり方とかのってないす。

473:nobodyさん
03/07/27 15:37
PHP+PostgreSQLで接続されているクライアントのDBデータを1分周期で更新するには
クライアントから定周期でサーバーへ更新要求を行わないとできないのでしょうか?
サーバーサイドだけでは無理でしょうか?

474:nobodyさん
03/07/27 16:12
>>473
クライアント以外のどこに更新用のデータがあるのかと小一分問い詰(ry
(言葉の定義は置いておいて、) サーバからクライアントにデータ要求のトリガーを起こさせたいってこと?

475:nobodyさん
03/07/27 18:49 0cmBAsiG
>>474
書き方が悪くてすいません。
やりたい事は有料サイトのポイント管理のような事で、接続されたクライアントの
ポイントを1分周期で減算させたいのです。
このような機能はやっぱりクライアントから定周期で更新要求をサーバーへ
リクエストしないと無理なんですかね?
タイマーや定周期処理みたいなものでPHPやPostgreSQLでできないですか?


476:nobodyさん
03/07/28 00:28 Jw2a8NaM
>>475
waitする関数作って(標準であったっけ?)、
1分毎に特定のフラグ立っているレコード(ログイン中みたいの?)を、
updateするplpgsqlを実行しておけばいいんじゃないの?

それか、
サーバーとクライアントをどういう意味で使ってるかわからないけど、
サーバーマシン上でcronで実行するのはどう?


477:_
03/07/28 00:56
URLリンク(homepage.mac.com)

478:nobodyさん
03/07/28 16:03
>>475
サービスの要求毎に今の時刻を記録するのを基本とし
A. 前回の時刻から1分未満なら記録しない。
B. 1分以上なら記録する。その時に1ポイント減らす。
こんなのは?


479:山崎 渉
03/08/02 02:23
   ∧_∧
  (  ^^ )< ぬるぽ(^^)

480:ぼるじょあ ◆ySd1dMH5Gk
03/08/02 04:52
     ∧_∧  ∧_∧
ピュ.ー (  ・3・) (  ^^ ) <これからも僕たちを応援して下さいね(^^)。
  =〔~∪ ̄ ̄ ̄∪ ̄ ̄〕
  = ◎―――◎                      山崎渉&ぼるじょあ

481:nobodyさん
03/08/11 14:14 gq467PzP
PostgreSQL+PHPでBLOGとか掲示板作って
運営されたことのある人とかいます?

記事や、コメントはTEXTで格納してると思うんですが、
量が増えてきたときの負荷ってどんなもんですかね。
せっかくDB使ってるんで、検索とかもできるようにしてると思うのですが、
量が増えたときにTEXTから検索はやっぱ時間かかりますか?

482:nobodyさん
03/08/11 15:40
>>481
仕事でやってるのなら、
テキスト検索エンジンの業者に比較資料を出してもらうとか。
そこまでだったらタダだとおもうし。

483:nobodyさん
03/08/11 15:42
>>481
どういう検索をしようとしているのかわからないけど、
おそらく記事の検索なんだよね?
RDBはそういう検索には向かないと思うよ。
全文検索系のものを別に入れるのが普通だと思う。


484:.
03/08/11 17:18
>>481
うちは PHP + Postgres で記事を管理。
cron で定期的に html に書き出してそれを namazu に食わせて全文検索できるようにしてる。
MySQL の全文検索とかってどうなんだろう。今は特に案件が無いので調べてないけど。

485:nobodyさん
03/08/11 17:47
>MySQL の全文検索とかってどうなんだろう。

8万件のデータを検索させたら,中間一致検索で2秒ぐらい掛かってたのが
0.5秒切った。

486:.
03/08/11 18:03
>>485
おおっ。やっぱ MySQL だけあって速いのね。
日本語とか通るのかな。ちょっとぐぐってみるか。

JAVA Developer 2003年6月号より転載 MySQL4の全文検索に迫る
URLリンク(www.zdnet.co.jp)

日本語に対応させるには形態素解析ロジックを組み込まなきゃいけないみたいね。
ほほう、河馬屋二千年堂さんとかも、結構前からいろいろやってるんだ。さすが。

デフォルトで日本語対応になったら、一気に普及しそうな予感・・・。

487:nobodyさん
03/08/11 18:16
>>486
>河馬屋二千年堂さんとかも、結構前からいろいろやってる

あ、>>485はそれをPHP用に直してやってみた結果です。

488:山崎 渉
03/08/15 22:37
    (⌒V⌒)
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。
  ⊂|    |つ
   (_)(_)                      山崎パン

489:nobodyさん
03/08/18 01:33
age

490:nobodyさん
03/08/19 11:31 lIsPsTRV
num | str
-----------
1 | a
2 | b
4 | c
5 | b
3 | a
1 | c
3 | a
: :

こんなテーブルがあったとして、
・num>3の総数
・num>3 and str='a'の総数
の2つを1回のSQLで同時に取得できますでしょうか?
(SELECT count(*)を2回するよりも軽いSQLで)

491:nobodyさん
03/08/19 12:01
>>490
select count(*), count(case when str = 'a' then 1 else null end) from hogetbl where num > 3

早いかは知らん。

492:490
03/08/19 12:47 oCHs6Pb7
>>491
試してみましところ、微妙早いみたいです。
ありがとうございます。


493:nobodyさん
03/09/22 06:55
xreaでpostgresを使ってるんですが、
処理時間のかかるDB操作を行うと、
DBにアクセスしたまま、phpスクリプトだけタイムアウトして
終了するようです。
この場合、DBへの接続は残ったままになってしまうんでしょうか?

494:nobodyさん
03/09/22 07:15
というのは、現在、
Warning: pg_connect(): Unable to connect to PostgreSQL server: Sorry, too many clients already
となって全くDBに繋がらなくなってしまいまして、、、
DBがxreaにあるのでどうしたものかと。。。

495:nobodyさん
03/09/22 07:22
ゾンビのような接続が残っていたらどうしよう。

496:nobodyさん
03/10/09 20:52 lBy2Nsd4
MySQLで作られたサンプルコードをPostgreSQL対応のものを作ろうとしているのですが、
気をつけることありませんか?

497:nobodyさん
03/10/10 13:54
MacOSX 10.2.8なんですが、PHPのソースからのインストールでつまづいています。
URLリンク(www.entropy.ch)
当初は上記のサイトのPHPパッケージを使っていたのですが、これだとmbregexが有効になっていないので。
PHP-usersを調べてみるとPostgreSQLをソースからのインストールして成功した例があったので(元々ソースから入れていたんですが念のため)ここからやり直し。
make checkでエラーが出ましたが、それでもPostgreSQL 7.3.4はインストールできました。(readline 4.3をソースからインストール後)
しかしPHP 4.3.3のインストール段階でmake時に以下のエラー。

ld: unknown flag: -export-symbols
make: *** [libs/libphp4.bundle] Error 1

一応configureのオプションはこんな感じです。
./configure --with-pgsql=/usr/local/pgsql --with-apxs=/usr/sbin/apxs --without-mysql --enable-mbstr-enc-trans --enable-mbstring --enable-mbregex --enable-versioning --enable-trans-sid

どうしたものでしょうか。

498:nobodyさん
03/10/10 14:13
>>497
僕の環境(OSX 10.2.8, gcc3.3, Postgresはentropy.chのパッケージ)では
make の前に sudo ranlib /usr/local/pgsql/lib/libpq.a が必要だったのと(最初の一回だけでOK)
configure のオプションに --with-openssl=/usr を加えないといけませんでした。
あと、--with-apxs=/usr/sbin/apxs を指定したときも make でコケて、
--with-apxs だけ(パス指定なし)ではいけました。
参考になれば幸いです。

499:nobodyさん
03/10/10 14:22
おっと、pgは自前でコンパイルされてるんですね。
よく読んでませんでした、スマソ。
それなら --with-apxs の修正だけでOK...かな?

500:nobodyさん
03/10/10 15:03
>>498
sudo ranlib /usr/local/pgsql/lib/libpq.aの記述はここにもありましたね。
URLリンク(semicolon.jp)
で、configureのオプションで、--with-apxsだけ、--with-openssl=/usrを加えてやってみましたがまた同じエラーです。
再インストール時に特に気をつけなければいけない点などありますか?特定のファイルやディレクトリは必ずリネーム(or削除)しておかなければならない、とか。
前に入れたものが残っていて、そこで引っかかってるのかとも思いまして。

501:
03/10/10 16:42 eMmbcoMO
PHP Nuke って PostgreSQl でも動くと思い込んでいたんだけど、
実は移植作業中?
URLリンク(phpnuke.org)
URLリンク(spiral303.com)

502:
03/10/10 17:06 eMmbcoMO
F-Board 掲示板
URLリンク(www.php-j.com)
おお、~これは便利そうかも。インストールしてみよっと。
スレッドフロート型のほうがいいんだけど…

503:
03/10/15 14:57 P4ZVyYvK
URLリンク(haitaka.com)
dbEasy の作者ってなくなっておられたんですね。
ご冥福をお祈りします。

504:nobodyさん
03/10/20 21:25 waXYXRrl
telnetだとできるのに、なぜかPHP上からはinsert,delete等、
データをいじる実行文ができなくて困っています。(同一ユーザで)

[connect]→[insert]→すぐに同一スクリプト上で[select *]すると挿入できてるのに、
スクリプト終了後に確認してみると反映されていない。(エラーメッセージも出ない)

おかしいと思って、一度[insert]した後に明示的に[close]して、
[connect]し直してから[select *]すると、反映されていないことが分かりました。

接続がきれると変更点が元に戻ってしまうというのは、どういったところが
原因になっているのでしょうか?


505:nobodyさん
03/10/20 21:35
ろーるばっく は?

506:504
03/10/20 23:08 UOeO/1yp
>>505
スクリプトには書いてないんですが、
勝手にろーるばっくする現象とかあるんでしょうか?



507:
03/10/21 07:56 cLTK9aL8
telnet でってことは psql でってこと?
同じユーザって本当?
PostgreSQL のログ見てみたら?

508:nobodyさん
03/10/21 09:59
もし BEGIN してたら、そのままCOMMIT or END しないで
closeしたらロールバックするかな

509:nobodyさん
03/10/21 13:38
>>507,508
508さんの指摘どおり、
BEGINして、ENDせずに終了していました。
すみません。
ありがとうございました。

510:
03/10/21 15:01 cLTK9aL8
>>509 あいや~漏れも同じミスをしそうだった。
人の振り見て我が振りなおせ、だなぁ…

511:nobodyさん
03/10/21 22:08
>>501
一応、各種DBで動くようになってるようなんだけど、
中身を見るとMySQLでしか動かない。

最近のバージョンは、postgresql用のSQLが少しまとも
になってたけど、まだ古い部分があるんで、、、
フォーラム以外はなんとかなるかと、、、



512:(;´Д`)
03/11/02 19:07 iBTmJlep
( ・ω・)∩
ちょっとしたクイズアプリケーションを作っています
クイズにはカテゴリがあり
そのカテゴリ毎に出題制限機能をつけたいと思います
DBのテーブルcategoryenabledには
categorynumber(1~8までのカテゴリナンバー)
enabled(t or f)
のカラムがあります。

今思案しているのはUIにてカテゴリ名とチェックボックスを付け
その出題制限機能ページを開いた時にcategorynumber1~8までの該当するenabledの値が
tだった場合に対応するカテゴリ名のチェックボックスにチェックが入るようにしたいです

次にsubmitボタンを押したときにそのチェックの有無に応じてカテゴリ名に対応する
categorynumberのenabled値に対して更新クエリーを発行したいのです
どなたか教えてください
⊂⌒~⊃。Д。)⊃

513:nobodyさん
03/11/04 03:41
pg_fetch_object でデータを取得したとき、
テーブル名.プロパティのデータを取得するにはどうしたらいいんでしょう?
たとえば、$obj->table.name とするとPHPの構文エラーが出ますよね?

514:nobodyさん
03/11/04 03:41 qRLV45gQ
 

515:nobodyさん
03/11/04 11:24
>>512
チェックボックスを全て同じ名前にして、配列で取り出し、
SQL文のWHERE区でOR でつなげばいいと思う

って、categoryenabled がどうなってんのかさっぱりわからんが

516:nobodyさん
03/11/22 22:30 J3MEwjgU
すいません。初心者なんですが、phpから、postgresへコネクト、できたら「接続できましたよ」と出したいんですが、
Fatal error: Call to undefined function: pg_connect() in /var/www/html/memberlist.php on line 8
上記エラーが出てしまいます。
このエラーは、PHPをrpmではなく、ソースからコンパイルしていれないとだめってこと、、
でしょうか。ちなみに、phpinfo()では、pgsql suportは出ていません。が、dbx、dba
というのは、あります。あと、configureのところに、 '--with-pgsql=shared' ともあります。
php.iniをいじれば良いんでしょうか。

517:nobodyさん
03/11/23 00:09
>>516
たとえば、php や libphp4.so を ldd で表示させてみて
libpq.so は表示されるかい?

518:nobodyさん
03/11/23 00:23 kTbiV7p7
>>517 下記コマンド実行。
ldd /usr/lib/httpd/modules/libphp4.so
ldd /home/(ユーザー名)/plugin/libphp4.so

ともに、libpg.soは表示されませんでした。
蛇足ですが、コンパイルがうまくいかなかった経緯があり、日経linux1月?付録のrpm(マルチバイト対応)で
今までやってました。postgresqlをやりたくなりいじりはじめた次第です。

519:nobodyさん
03/11/23 00:34 kTbiV7p7
>>517
ちなみに、findで調べたら、存在はしているみたいです。これを日も付けるような
作業をすればいいのでしょうか。
/usr/local/src/postgresql-7.3.2/src/interfaces/libpq/libpq.so
/usr/local/pgsql/lib/libpq.so

520:nobodyさん
03/11/23 02:33
>>518
PostgreSQLのライブラリはインストールされてて
phpにはリンクされてない状況かな
(よく考えたらphpコマンド使うなら、php -m でもよかったな)
phpをMakeするのがいいと思う。特にPHPはリンクしなおしが多いので
どっちにしろソースからやっといたほうがいいと思うよ

521:nobodyさん
03/11/23 03:14 kTbiV7p7
いつかは、やらねばと思ってましたが、ちょっと大変ですね。
がんばってみます。

522:nobodyさん
03/11/23 03:16
>>519
pgsqlはソースからいれたんか。それならrpmでいれたphpには無理でしょ。たとえサポートしていたとしても。
--with-pgsql=shared じゃなくて、--with-pgsql=/usr/local/pgsqlになっとらんといかんのとちゃいまっか?

>>520のいうように、phpをソースから入れなおしが近道なきもするが、どうせapache(?)もrpmから入れたんかな?

523:nobodyさん
03/11/23 10:46 kTbiV7p7
>522
そうです。apache&php=>rpm postgres=>tarでした。
コンパイルオプションが複雑に絡む場合は、関連するものすべてソースから
入れたほうがいい、、ということなんでしょうか。教訓として。

524:nobodyさん
03/11/23 12:35
関連するものはヘッダとライブラリがあればいいよ
ヘッダとライブラリだってrpmで提供されてる場合が多いし

コンパイルオプションやリンクするライブラリが
変わることが多い場合はソースのがいいとは思う

パッケージのディレクトリ構成を/usr/localに一本化
したかったり使い分けがめんどくさいと思ったら
ソースから入れるのがいいかもね。慣れるとどっちでも
同じ感覚でインストールできるよ

525:nobodyさん
03/11/23 23:04
>>523
/libにlibpq.so.*のリンクを作ってから、phpのrpmをインスコするとどうなるのだろう。
と、ふと思った。


526:nobodyさん
03/11/24 09:18 pzrePjyL
psqlではふつーにselectで引っ張ってこれるんだけれども、
PHPからデータとってこようとすると、そこで処理が停止してしまうんです。
PEAR_DBを使っていたんでそのせいかともおもって、
pg_*で書き直して試してもやっぱり同じ。

データの内容は300近いWebページのソースです。
9割くらいのページは正常にfetchしてこれるんですが、残り1割が固まります。

mb_convert_kana/encodingでEUC-JPにノーマライズしてから格納しているんですが・・・。
っていうか、UPDATEできるのにfetchできないってどういうことなんでしょう。

527:nobodyさん
03/11/27 19:56 HaCIHFLT
簡単なことかもしれないんですけど、postgresqlのカラムにdatetime型で
日付時刻が入ってまして、これをphpで「年/月/日/ 時:分」という形に
したいんですが、なんかそのものずばりの関数ってないでしょうか?
また、関数がない場合、こういう場合は普通どう処理するんでしょうか?
もし解説したWebページがあれば教えて下さい。


528:nobodyさん
03/11/27 20:02
>>527
解説したページ
URLリンク(www.php.net)

SQLでやっちゃうのもいいよ。そっちのやりかたはPostgreSQL付属のドキュメントをみてね☆

529:nobodyさん
03/11/28 01:13
SELECT to_char(hoge_date, 'YYYY/MM/DD HH24:MI') FROM table;

530:nobodyさん
03/11/28 01:44
>>526
> UPDATEできるのにfetchできないってどういうことなんでしょう

selectをEXPLAINしてみたら?たぶんSeq Scanじゃないかな。
UPDATEはWHEREにINDEX使ってるだろうからIndex Scanになってるはず。

select文にand index > 0 とか追加してIndex Scanさせれば早くなってタイムアウトしないんじゃねーですかい?

例えて悪いけど
SELECT to_char(hoge_date, 'YYYY/MM/DD HH24:MI') FROM table;
hoge_dateにkeyがなければこれも遅いと思います。

id integer primary key があるとするなら、

SELECT to_char(hoge_date, 'YYYY/MM/DD HH24:MI') FROM table where id > 0;
とすればちったー早くなると思います。

531:527
03/11/28 21:59 UsQiFXqj
528さん、529さん、530さんレスどうもありがとうございます。
kterm上でSQLを
select to_char(uptime, 'YYYY/MM/DD HH24:MI') from table;
とすると、無事、2003/11/27 21:30 と出力されました。
ただ、私はphpのスクリプト中で取得したいのです。
たとえば、imageというテーブルに
id serial, uptime datetime,
というカラムがあるとして(実際のカラムはもっと多いです。)、
insert into image(uptime) values('now');
とデータを入れています。このテーブルから日付時刻を
$sql="select * from image";
$rs = pg_query($db, $sql);
while ($data = pg_fetch_array($rs)) {
print("<td>".$data['id']."</td>");
print("<td>".$data['uptime']."</td>");
}
略~ print("<td>".$data['id'].":".$data['uptime']."</td>");~略
として 表の中に出力したいのですが
そのへんをもう少し教えていただけないでしょうか?          

532:nobodyさん
03/11/28 22:25
>>531
$data['uptime'] = date("~",$date['uptime']) とか、 --PHP date関数
select select to_char(uptime, '~') as formatted_uptime from table とか。 -- SQL as句

533:526
03/11/29 05:22 3dfgxKEK
一応 EXPLAIN してみましたが、IndexScan であっさり。

で、いろいろ追ってみたのですが、
どうやらpostgresのヒープサイズをオーバーしてるせいみたいでした。
いろんなサイズのを試してみたら、ちょうど32kくらい以上だと、
同様の現象がでるようでした。

おそらく text 型にでかいの突っ込んでるからだとおもいます。
実質上限がないものだとばかり思ってたんで、がっくり。

ラージオブジェクトならうまくいくだろうか・・・。

にしても解せないのは、なんで psql ではできて、php からはできないのか。
7.1以前のまんまなのかなぁ。

534:nobodyさん
03/11/29 15:10 3wwIsq6W
すいません。データベースを作ろうとして、エラーが出てしまうのですが、
何か間違っていますでしょうか。
ユーザpostgres作成。dataというディレクトリを作成。オーナーをpostgresに。
そして、postgresになってから、initdbで作成。ここで躓きます。
#initdb -D /usr/local/pgsql/data
The files belonging to this database system will be owned by user "postgres".
This user must also own the server process.

The database cluster will be initialized with locale ja_JP.euc.

fixing permissions on existing directory /usr/local/pgsql/data... ok
creating directory /usr/local/pgsql/data/base... ok
creating directory /usr/local/pgsql/data/global... ok
creating directory /usr/local/pgsql/data/pg_xlog... ok
creating directory /usr/local/pgsql/data/pg_clog... ok
selecting default max_connections... 10
selecting default shared_buffers... 50
creating configuration files... ok
creating template1 database in /usr/local/pgsql/data/base/1... FATAL: XX000: f
ailed to initialize lc_messages to ""
LOCATION: InitializeGUCOptions, guc.c:1866

initdb: failed


535:nobodyさん
03/11/29 19:01
#ってことは、postgresになってないと思うのだが・・・

536:nobodyさん
03/11/29 19:14 3wwIsq6W
>535
534です。
すいません。postgresになっても、同じ名でした。
あと、そのエラーのあとに、同じコマンドを打つと、下記のようなエラーが出ます。

initdb: directory "/usr/local/pgsql/data" exists but is not empty
If you want to create a new database system, either remove or empty
the directory "/usr/local/pgsql/data" or run initdb with an argument other than
"/usr/local/pgsql/data".

537:nobodyさん
03/11/29 19:29 3wwIsq6W
以下のリンクにあるようにやったら、とりあえず作成だけはうまくいきました。
URLリンク(ml.postgresql.jp)
例)
$LANG=C initdb --encoding=EUC_JP --no-locale
$LANG=C pg_ctl start
でも、即行でデータベースがシャットダウンしてしまいます。
[postgres@linux data]$ LANG=C pg_ctl start
postmaster successfully started
[postgres@linux data]$ LOG: database system was shut down at 2003-11-29 19:16:3
3 JST
LOG: checkpoint record is at 0/9B0B8C
LOG: redo record is at 0/9B0B8C; undo record is at 0/0; shutdown TRUE
LOG: next transaction ID: 534; next OID: 17142
LOG: database system is ready


538:nobodyさん
03/11/29 19:30
すでにdataディレクトリがあるんでしょ。まず消すところから試してくれ

539:nobodyさん
03/11/29 19:39 3wwIsq6W
すいません。ちゃんとできました。落ち着いて、一個一個確かめてやったらできました。
空回りやローでゴメンゴ

540:nobodyさん
03/12/01 19:27 GUQR4nbL
すいません、テーブルの結合についておしえてください。
addres(id serial, name varchar(32), company_id int, sityouson_id int),
company(id serial, company_id int, company varchar(32)),
sityouson(id serial, todouhuken varchar(32), sityouson_id int, sityouson varchar(32))
という3つのテーブルがあり、
name, company, todouhuken, sityouson
というふうに取得したいのですが、どのようにするのがよいでしょうか?
例えば、
addres(id serial, name varchar(32), company_id int),
company(id serial, company_id int, company varchar(32)), から
name,companyとして取得するには
select addres.name, company.company where addres.company_id=company.company_id
でいいと思うんですが、tableが3つのときがわかりません。
select addres.name, company.company, sityouson.todouhuken,
sityouson.sityouson where addres.company_id=company.company_id and
addres.sityouson_id=sityouson.sityouson_id
とかでしょうか?

541:nobodyさん
03/12/01 19:47 YrMX5TT+
URLリンク(homepage3.nifty.com)

542:nobodyさん
03/12/02 01:18 Dm3L1AqD
phpの設置についてお伺いしたいのですが…。

php の実行を許可する.htaccess の記述は
どのようになるのでしょうか。

その設定の必要のないサーバで実行していたものを
今度設定が必要なサーバに移すことになりまして
教えていただけませんでしょうか。

543:nobodyさん
03/12/02 01:26
>>542
httpd.confと同じように、
AddType application/x-httpd-php .php
でいいよ。
<Directory>で囲った方が気持ちいいかな。

php.iniで設定するようなやつはマニュアルの「はじめに - 設定」を参照してみそ。

544:nobodyさん
03/12/02 01:43 Dm3L1AqD
>>543 さん
ありがとうございます。
早速やってみます。



545:542・544
03/12/08 15:04 bUzy6m4p
問題なく稼動中です。
ありがとうございました。

546:nobodyさん
04/01/05 17:50 ksHHV4PL
すみません、PHPのMySQL関数にある、
mysql_data_seek(intRs,intRow) この関数なんですけど
postgreSQLで同じようなのないでしょうか?


547:nobodyさん
04/01/05 22:18
>>546
pg_result_seek() かな?

つか、カーソル使えよ。

548:nobodyさん
04/01/10 20:36
PHP + PostgreSQLでオススメの書籍はありますか?

549:nobody
04/01/12 21:34 DtxerTTK
シーラカンス?


550:nobodyさん
04/01/12 21:47
マンモス?

551:nobody
04/01/12 22:22 DtxerTTK
10日でできる…ってゆうのを詠んだ。
具体的ではあったがPHPの一部分しかあつかってなかった…
webのほうが為になる気が…

552:nobodyさん
04/01/13 00:46
とりあえず赤、青マンモス本とシーラカンス本があればいいんでは。
あとはwebでどうにかなる。

553:nobodyさん
04/01/13 01:31
URLリンク(www.postgresql.jp)
これが結構良かったけど

554:nobodyさん
04/01/23 17:29
オンラインショッピングサイトやってるんですけどお客さん(店長さん)に

商品を編集するのに管理画面でやるのは面倒くさいので、
CSVでダウンロードしてエクセルで修正してまたアップロードしたい

って言われたんですけど、UPDATE に対応した COPY コマンドみたいなことってできませんでしょうか?
PHP で一行ずつ商品番号を調べて UPDATE でもいいんですが、時間がかかってしまうので。。。
何かいい方法があったら教えてください。おながいします。

555: 
04/01/23 17:47
555get, zuzaa

556:nobodyさん
04/01/23 20:29
> PHP で一行ずつ商品番号を調べて UPDATE でもいいんですが、時間がかかってしまうので。。。

1000件程度であればそんなに時間かからないと思うんですけど、そんなに商品の数多いんですか?

557:nobodyさん
04/01/23 21:21
>>556
ちょっと待つ感じですね。まぁお客さんに遅いと感じたら小分けにしてくださいと言っときます。お邪魔しますた。

558:nobodyさん
04/02/11 22:13 EReQ7yHa
TeraTermで文字化けしちゃうんですが・・・
TeraTermの端末設定は送受信ともEUCにしてEUC_JPにしたDBを開きます。

# psql -l
List of databases
Name | Owner | Encoding
-----------+----------+----------
testdb | postgres | EUC_JP

# psql testdb
# \encoding EUC_JP

testdb=# SELECT * FROM report;
number | title | report
--------+-------------+---------
1 | <A5><BF><A5><A4><A5><C8><A5><EB>1 | <CB><DC><CA><B8>1
2 | <A5><BF><A5><A4><A5><C8><A5><EB>2 | <CB><DC><CA><B8>2

とまぁこんな調子です。
ホントは 1,タイトル1,本文1と入っているのに。
ちなみにPHPからブラウザを通してみると正常に見えました。
TeraTermの問題でしょうか?

559:nobodyさん
04/02/13 10:50 JC2NxhSZ
Postgresってローカルにインストールできますか?

560:nobodyさん
04/02/13 10:57
>>559
逆にお伺いしますが、リモートにインストールってどうやってやるんでしょう?
あ、それともグローバルの反対のローカルかな?んな訳ないか…。

561:nobodyさん
04/02/13 12:09 JC2NxhSZ
ええと、自分のパソコンのWindowsに入れたいのですが。

562:nobodyさん
04/02/13 12:29
>>558
Pagerが日本語通らないのではないか
日本語パッチ当たったless か more 入れて見たら

563:nobodyさん
04/02/14 13:57
MySQLと比較して、PostgreSQLの1番良い機能はなんですか?

564:nobodyさん
04/02/14 16:06
ドキュメントが整理されている

565:nobodyさん
04/02/14 16:38
>>561
Windowsは無理。MySQLなら可能。

566:nobodyさん
04/02/14 17:04
>>561
WindowsでPostgreSQLとゆーと、
有料だけとPowergresとか、cygwin上で動かすくらいかな。
WindowsNativeなものを作ってた人もいたけどもうメンテしてなかった気がする。
Linuxはあちこちに情報があるので割愛。
Macはよく知らない。

567:nobodyさん
04/02/14 17:24
Macの場合、OSXだとUNIX環境にPHP+PostgreSQLの環境を構築出来ます。

英語だけど、ここが参考になります。
URLリンク(www.entropy.ch)

568:nobodyさん
04/02/14 19:29
おいらがPantherにPostgreSQL7.4インスコしたときのメモ。

1. Finkでreadlineをインストール

2. PostgreSQLをビルド&インストール
$ ./configure --with-includes=/sw/include --with-libraries=/sw/lib
$ make
$ sudo make install

3. システム環境設定の「アカウント」からユーザ「postgres」を作成。
名前欄は「Postgres」とでもしておく。

つづく。

569:nobodyさん
04/02/14 19:30
4. 環境変数を設定。(.bash_profileに以下の記述を追加)
if [ -e /usr/local/pgsql/ ]; then
export POSTGRES_HOME=/usr/local/pgsql
export PGLIB=$POSTGRES_HOME/lib
export PGDATA=$POSTGRES_HOME/data
export PATH=$PATH:$POSTGRES_HOME/bin
export MANPATH=$MANPATH:$POSTGRES_HOME/man
fi

5. PosgreSQLを初期化&起動
$ cd /usr/local/pgsql
$ sudo mkdir data
$ sudo chown postgres:postgres data
$ sudo chmod o-rwx data
$ sudo su postgres
$ initdb --no-locale --encoding=UNICOCE -D $PGDATA

570:nobodyさん
04/02/14 19:35
あとはPostgresが自動起動するように/private/etc/hostconfigを設定するのと
/Library/StartupItemsに関連ファイルを入れればおしまい。

これはentropy.chのパッケージ(pgsql-startupitem-1.2.pkg)を使えば一発だし
自力でやりたいのならDarwin用にビルドしたときにPostgresのStartupItemが生成されて、
設定方法も表示されるからそれに従えばOK・・・・だった気がするんだけど
これについてはメモを取り忘れてて思い出せないっス。

571:nobodyさん
04/02/14 19:39
entropy.chのPostgresを使うときはPHPのビルド時にopensslを含めないとエラーが出るのと
makeの前にsudo ranlib /usr/local/pgsql/include/libpqしないとエラーが出ることがあるのに注意。

572:nobodyさん
04/02/14 19:40
スマソ、>>571
/usr/local/pgsql/lib/libpq.a
ですた。

573:nobodyさん
04/02/15 16:03 Axezk+8k
永谷園のホームページ、ダウン中。。
URLリンク(www.nagatanien.co.jp)

pg_connect() unable to connect to PostgreSQL server: connectDBStart() -- connect() failed: No such file or directory
:
:
このエラーが出るってことは、テストしていないってことか?
ここ見てる担当者、何とかしたほうがいいんじゃない?

URLリンク(www.nagatanien.co.jp)

このプログラム、普通消さないか?

574:nobodyさん
04/02/15 17:42
まだデバッグ中なんだろ

575:nobodyさん
04/02/15 18:33
デバッグするなら外部からアクセス遮断するとかしないのか?
DBのフィールド名までおっぴろげでるぞ。

576:森の妖精さん
04/02/15 18:40
あぶねーなー。。これ。。。
ポートもデフォルトだし。もしかしてパスワードとか設定してなかったら
ガクガクブルブルものだな。


577:nobodyさん
04/02/15 21:55
デフォルトで外部サーバから接続できないからいいだろ

578:nobodyさん
04/02/15 22:30
普通は本ちゃんサーバーのエラーメッセージは非表示にしないか?

579:558
04/02/15 22:44
>>562
失礼しました~

580:nobodyさん
04/02/16 01:53
つか、apache, PHPとも古すぎだろ、これ。

/func/の下も.htaccessで遮断してないので.inc読めちゃうし...。

581:nobodyさん
04/02/16 17:19
でも、あんまりおっぴろげると鯖缶が悪いのにこっちがパクられちゃうんだよね。

582:nobodyさん
04/02/17 01:52
訂正されとる
ここ見たのかねw

583:582
04/02/17 01:53
javascriptのエラーがうざいが、printenvは消えとる

584:nobodyさん
04/02/17 21:42
なんでも入りの新しいサーバーになってる。
でも結局、どのモジュールも古いな。
なんでわざわざ古いモジュール使ってるんだろ?

URLリンク(uptime.netcraft.com)

585:nobodyさん
04/02/18 07:43
2/15から2/16いっぱいまでずっとダウンしていたな。。

たかがこのエラーの修復ぐらいで何でそんなに時間がかかるのかと
不思議だったが、何とOSの入れ替えをしてたのか...w
相変わらずHTTPS開いているし
証明書、localhost.localdomainだし(Turboのときはsnakeoilのヤツだった)

エンジニアとしてはレベル低いかもw


586:nobodyさん
04/03/05 22:55
質問です。

Solaris+PostgreSQL不明+PHP不明を使っています。
TIMESTAMP型のカラムへPHPのフォームで入力した値を入れようとするとエラーで、データが登録できません。
ちなみに入力しようとした値をそのままpsqlコマンドで入力したら正常に登録出来ました。

Linux+PostgreSQL7.3+PHP4.3.1の場合、同じソースで問題なく利用できました。
SQLとPHPのバージョンが確認できていなくあれですがこれは何が悪いのでしょうか?


587:nobodyさん
04/03/05 23:25
釣は放置で

588:nobodyさん
04/03/06 01:30
さっがっそうぜ!ドラゴンボール!!

589:nobodyさん
04/03/06 16:09
釣りと思われるくらいに簡単な問題なんですか。。。
ぐぐってみてもそれらしい問題が出てこなかったんだけどなぁ。
ヒントだけでも下さい。。。

590:nobodyさん
04/03/06 16:23
URLリンク(www.google.co.jp)

591:nobodyさん
04/03/06 18:20
あー失礼しました。
エラー内容は下記の通りです。
Warning: pg_query() [function.pg-query]: Query failed: ERROR: parser: parse error at or near "00" at character 37 .
で、実際にpg_queryに渡しているのは、
INSERT INTO date VALUES ('2004-03-06 00:00:00')
です。

値の渡し方がマズイのでしょうか?

592:nobodyさん
04/03/06 18:59
>>591
テーブル構造カモーンΨ(゜∀゜)Ψ

593:nobodyさん
04/03/06 19:07
>>591
> 実際にpg_queryに渡しているのは、
> INSERT INTO date VALUES ('2004-03-06 00:00:00')
> です。
ほんとか?

594:nobodyさん
04/03/06 20:12
>>592
失礼しました。テーブル構造です。
sql_test=# \d date
Table "public.date"
Column | Type | Modifiers
--------+-----------------------------+-----------
date | timestamp without time zone |

>>593
pg_queryに渡した変数をそのまま変数で書き出してペーストしたので間違っていないかと思います。
問題点を明確にする為にTIMESTAMP部分を抜き出して下記のような感じでテストしています。
現在手元にSolarisをいじれる環境がないので、アドバイス結果をすぐには試せないのですが、
RedHatの鯖ではこれで問題なく動きました。
Solarisの鯖では何故か>>591のようなエラーが。。。

<?php
$inc_pg['sql_query'] = "INSERT INTO date VALUES ('" . $_POST['fdate'] . "')";

$string = 'dbname=sql_test';
$db['handle'] = pg_connect ($conn);

$pg['exec_id'] = pg_query ($db['handle'], $pg['sql_query']);

pg_close ($db['handle']);

print 'sql =>' . $pg['sql_query'];

?>

足りない情報がありましたら出せるだけ出しますので、よろしくおねがいします。

595:586
04/03/06 20:16
>>594
スクリプトで一部間違ってました。

>$string = 'dbname=sql_test';
>$db['handle'] = pg_connect ($conn);
-----
$conn = 'dbname=sql_test';
$db['handle'] = pg_connect ($conn);


596:586
04/03/06 20:20
訂正をなんどもすみません。

>$inc_pg['sql_query'] = "INSERT INTO date VALUES ('" . $_POST['fdate'] . "')";
-----
$pg['sql_query'] = "INSERT INTO date VALUES ('" . $_POST['fdate'] . "')";


597:nobodyさん
04/03/06 21:53
SQLインジェクションが非常に気になるが、それは置いといて、

pgsqlのバージョンは、select version(); で確認できる。
phpもpnpinfo();でわかる。

で、ひょっとしたらYMDじゃなくて、MDYに設定されているのかも?
確認方法があったと思うが失念。
'03/06/2004 00:00:00'でやるとどうなるかな。

598:586
04/03/06 23:54
>>597
アドバイスありがとうございます。
SQLインジェクションについてはまだ考えてません。
それはおいおい学習していきたいと思います。

バージョン情報の確認とMDY形式の入力を試してみたいと思います。

599:nobodyさん
04/03/07 17:08
show DateStyle; とか
でもどっちで明らかな奴は自動で判別するけどな

600:nobodyさん
04/03/08 04:17
>>498

Mac OS X 10.2.8,PostgreSQL 7.4.1,PHP 4.3.4で
全てソースをコンパイルして環境を作っていたんですが、
同じ現象に悩まされました。
ただ、

ld: unknown flag: -export-symbols

なわけだから、

Makefile の該当行でそのフラグを指定してる箇所を削って
次のようにしたら make は成功しました。

EXTRA_LDFLAGS = -L/usr/local/pgsql/lib


601:nobodyさん
04/03/08 04:18
>>497 だったみたい

602:586
04/03/08 21:02
Solaris鯖はPostgresは7.1とPHP4.3.1でした。
それで'03/06/2004 00:00:00'の形式で入力しましたら無事にDBに登録されました。
アドバイス、本当にありがとうございました。
これで次に進めます。

603:S.N
04/03/11 20:48 Gs6PweG/
春日井市の方にある藤山台幼稚園の園長先生の名前を知ってる方いらっしゃいませんか?
知ってたら教えて下さい。宜しくお願いします。

604:nobodyさん
04/03/13 01:00 36IkPElZ
Linux+PostgreSQL7.3+PHP4.3.1での話なんですが
同環境の鯖からpg_dumpallしたファイルを
psql -f しようとしたら
「\connect: FATAL 1: IDENT authentication failed for user "xxxx"」
と怒られてぐぐった結果
pg_hba.confのlocalをall trustにしたんですけどまだ同じ症状なんです。
他に権限設定するファイルってあったら教えてください。
あと自宅鯖ですがpg_hba.confのlocalをall trusって危険ですか?


605:ネットdeDVD(・∀・)♪ ◆uRDVDsgexc
04/03/13 01:06
PHPってすごいんですね・・・

606:nobodyさん
04/03/14 14:23
>>604
よくわからんけど、ラージオブジェクトは使ってる?
pg_dumpall -g > "filename"
で、グローバルデータのバックアップはやった?

607:nobodyさん
04/03/15 11:56 u5uDbosW
>>606
ラージオブジェクトは使ってないんです、
オプションは-fだけ付けてダンプでした…、
もう一度新鯖の方、DB初期化からやり直してみるカナ…。

608:nobodyさん
04/03/15 13:16
URLリンク(ml.postgresql.jp)


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch