トップページ⇒php
933コメント644KB

PHP + PostgreSQL

■ このスレッドは過去ログ倉庫に格納されています
0001りさあ NGNG
語りません?
0243名無しさん@お腹いっぱい。01/11/06 18:34ID:OqD8s6xc
>>242
マンモス本読んだ?
0244>>24301/11/07 10:11ID:ieoCTquz
マンモス本読んだけど、いまいちよくわかんないんです^^;
0245名無しさん@お腹いっぱい。01/11/07 11:28ID:ieoCTquz
>>243
どの変(ページ数とか・・・)教えてくれると助かるんですが・・・。
0246名無しさん@お腹いっぱい。01/11/07 12:02ID:???
>>245
漏れが持ってる PHP3 用のやつでよければ 81 ページからあたり。
024724501/11/07 12:43ID:ieoCTquz
>>>246
自分が持ってるのは、PHP4なので^^;
0248名無しさん@お腹いっぱい。01/11/07 12:56ID:rEwaGgOJ
>>242
PHP4のやつはP144,145あたりを読めばいいかと。
でもPostgreSQLのselect文を理解してからのほうが
いいな。
024924201/11/07 14:14ID:ieoCTquz
もう少し、本読んで、勉強しなおします。
ご教授、ありがとうです。
0250その他01/11/09 16:03ID:vDpRquZJ
PostgreSQLのインストール後
regression testを行ったのですが、全てが「failed」
になってしまいました。けれども、createdbもcreatetableも
insertもselectも問題無しに出来ます。でも、あとあと支障とか
あるのでしょうか?知っている方がいらしたら教えて下さい。
0251hen02/02/07 13:36ID:Bho0YULV

item_id | item_name
1    | XX
2    | YY
というテーブルがあって
変数 $itemname = XX として

このときitem_id = "XX"のitem_idを取り出すにはどうすればいいのですか?

とりあえず
$sql = "select item.item_id from item
where item.item_name = $itemname"; //item_nameとコンボボックスのdataが一致する時のitem_id
$result = pg_Exec( $conn, $sql );
とやってみたけどPostgreSQL query failed: って帰ってきます・・
0252hen02/02/07 13:42ID:Bho0YULV
$sql = "select item_id from item
where item_name = \"$itemname\"";

すんません
これに変えるとAttribute 'XX'not found
0253名無しさん@お腹いっぱい。02/02/07 22:38ID:blA7jPNr
SQLで文字列は ' で囲む
0254  02/02/07 23:32ID:z4yCqxdv
いつも、教わってばっかりだから、
たまにわ、教えてやるヨ
$sql = "select item_id from item where item_name = '$itemname'";
って書くんだよ。
''で、変数を囲むんだよ、
これ最強
0255 02/02/07 23:33ID:t9L0Eq4j
http://pc.2ch.net/test/read.cgi/ad/1012670549/l50
http://pc.2ch.net/test/read.cgi/ad/1012670549/l50
http://pc.2ch.net/test/read.cgi/ad/1012670549/l50
http://pc.2ch.net/test/read.cgi/ad/1012670549/l50
http://pc.2ch.net/test/read.cgi/ad/1012670549/l50
http://pc.2ch.net/test/read.cgi/ad/1012670549/l50
http://pc.2ch.net/test/read.cgi/ad/1012670549/l50
http://pc.2ch.net/test/read.cgi/ad/1012670549/l50
http://pc.2ch.net/test/read.cgi/ad/1012670549/l50
http://pc.2ch.net/test/read.cgi/ad/1012670549/l50
http://pc.2ch.net/test/read.cgi/ad/1012670549/l50
http://pc.2ch.net/test/read.cgi/ad/1012670549/l50
0256marois02/02/10 22:51ID:MJ34x4JG
CGI版のPHP4をあるホスティングサービスで使っています。
pg_close($this->con);
のところで「pg_close -1」という値をクライアント(HTML上)
に返してきてしまうので困っています。
@を付けたり色々やってみたけど駄目。
同じスクリプトをPHP3で流すとOK。
ローカルのPHP4(Apache版)でもOK。
なにがいけないのでしょうか?
#このホスティングサービスPHPのサポートはしてくれないのです。
0257名無しさん@お腹いっぱい。02/02/11 06:04ID:yEMLRxJJ
pg_fetch_object()でPGSQL_NUM(数値配列)引数を付けた場合,
次のような$rcプロパティでどのようにアクセスすればフィールドを
参照できるのでしょうか。

$this->rc[$i] = pg_fetch_object($result, $i, PGSQL_NUM);
0258  02/02/11 18:01ID:???
>>256
pg_close($this->con); 自体を削除すればOK!
closeなんて、かかなくても、動く。
0259marois02/02/11 20:58ID:PVwY953h
>closeなんて、かかなくても、動く。
動くとは思いますが、問題は出ないでしょうか?
一連のスクリプトで何度もOPENするのですが。
#セッションは1つなのでしょうか?
#疑ってすみません。
0260名無しさん@お腹いっぱい。02/02/11 21:08ID:???
ついさっきOIDの表示の仕方忘れて大変だった、
select oid, * from table;
って書けばいいんだけどoid,とか記憶から消えてたね。
PostgreSQLの解説系のサイトどこに行ってもoid,の事には
あんまり触れてもないしgoogleでも引っかからないし・・・。

そういえばPostgreSQL関係で新しい本出てたね、あれなんだっけ?
0261  02/02/12 00:06ID:???
>>259
書かなくても,問題でない。
どーせ、commitとか、してないんだろ。
そんな、PGだから、closeなんて、不要

0262marois02/02/12 01:39ID:Ixi/JtIe
失礼な^^;
テーブルの更新にはトランザクションは使ってます。
一応複数SQL流すので保険として。

話はちょっとそれますが、サンプルプログラムでコネクションをグローバル
変数に保持して、それを最後まで使い続けるプログラムを見たことがありま
す。最後にユーザーがLogoutしてくれればpg_close出来ますが、いきなり
ブラウザをばっさり終了されてしまうと出来ないですよね。
コネクションにあんまり神経質になんなくても良いのですかね。

同時接続50-100ぐらいを想定しているもので...ちょっと心配なのでした。
0263名無しさん@お腹いっぱい。02/02/12 21:51ID:???
>>260
公式本とかいうやつか?
postgresql.jpのだろ。
0264名無しさん@お腹いっぱい。02/02/18 21:01ID:???
とりあえず、PEARのDBクラス使いませんか?>ALL

コネクション云々を考える負担が軽減されますよ。
0265名無しさん@お腹いっぱい。02/02/18 23:58ID:???
>264
pearてわからんちん・・・( ´Д⊂ヽ ウエーン
0266(=゚ω゚)ノ ◆SI2r4V0c 02/02/19 10:36ID:???
日本語マヌアルあるよ。
0267(=゚ω゚)ノ ◆SI2r4V0c 02/02/19 10:38ID:???
http://pear.php.net/manual/ja/index.php
0268名無しさん@お腹いっぱい。02/02/19 10:44ID:???
>>262
http://www.php.net/manual/ja/features.persistent-connections.php
らしいです。

あんまり神経質にならなくてもいいみたいです。
0269名無しさん@お腹いっぱい。02/02/19 16:40ID:???
Postgreからtimestamp型のフィールドを取り出すとき、
日付の末尾に+9という値(GMT?)が付くんですが、これを取り外すには
どのようにすればいいんでしょうか。
0270名無しさん@お腹いっぱい。02/02/19 16:59ID:???
>266
マヌエルて助っ人野球選手がいたよね昔。
(◕ฺ∀◕ฺ)
0271marois02/02/19 23:38ID:SCYCQAYn
>>268
情報ありがとうございます。
大変参考になりました。

話が変わるのですが、皆さんは文字コードに何をつかっておられますか?
結構文字化けに悩まされています。(PHP3i18でも)
私の場合、EUCでソースを書いて、EUCでDBに格納しているのですが、ブラウザが
Shift-JISと間違って判断してしまう場合があるようです。
<meta .htaccess と色々試してみたけど、駄目なときがある。
Shift-JISでソース、Shift-JISでDB格納していらっしゃる方はいらっしゃいま
すか? どんな組み合わせが文字化けしにくいんでしょうか?
0272名無しさん@お腹いっぱい。02/02/20 00:07ID:???
>270
情報ありがとうございます。
大変参考になりました。
0273名無しさん@お腹いっぱい。02/02/20 11:00ID:???
>>271
理屈上は、EUC-JPオンリーな運用をすれば化けないはず。

でもそれは現実的な話では無いからなぁ…
0274名無しさん@お腹いっぱい。02/02/24 05:50ID:IIwngioo
php+postgreでwebアプリ構築してるんですが、
ログイン画面でユーザが入力したID、パスワードを照会するとき、
IDでSELECT ID, PASSWD ... みたいに引っ張ってきて、
そのPASSWDとPOSTに入ったパスワードをmd5で照会する、
この方法って無意味ですか?(セキュリティ上の観点で)
027527402/02/24 05:52ID:???
>>274
事故レス。情報不足してました。
DBには裸の状態でパスが入ってます。
0276名無しさん@お腹いっぱい。02/02/24 06:50ID:gC0AF2pI
>>274
 無意味。

 DB内のパスワード見られたらクラックされる為。
 ハッシュ化(MD5、DES)したパスワードを格納する。

 質問の内容からして効率悪そうな開発をしているっぽいので、
crypt関数と、mod_auth_pgsql について調べることをおすすめ
する。
027727402/02/24 13:30ID:IIwngioo
>>276
早速調べて入れてみました。
で、今さらなんですが、パスワードはphp以外の箇所(言語)でも使うため
仕様変更が難しいようです。
まあごく限られたネットワーク内での使用を考えてるので(外には出さない)、
それほどセキュアなシステムで無くても良いんですが、DBを暗号化せず
セキュリティを高める方法ってないでしょうか(SSL以外)。
0278名無しさん@お腹いっぱい。02/02/24 18:08ID:L35l4mFf
>>277

 DBを暗号化というか、DB格納パスワードをハッシュ化。

> セキュリティを高める方法ってないでしょうか(SSL以外)。

 無い。
0279名無しさん@お腹いっぱい。02/02/24 19:44ID:1vBdeyQk
でも crypt かけちゃったら、ユーザーがパスワード忘れた
ときとか、どうやって元のパスワードを教えて上げるの?

パスワード設定し直すっていう方法が現実的かも知れないけど。
0280名無しさん@お腹いっぱい。02/02/24 20:43ID:L35l4mFf
> どうやって元のパスワードを教えて上げるの?

 当然、教えてあげない。

> パスワード設定し直すっていう方法が現実的かも知れないけど。

 そうする。基本だよね?
0281名無しさん@お腹いっぱい。02/02/26 00:31ID:EFcQI2qb
>>273
PHP3-i18nでもPHP4.0.6以降でも、出力だけSJISってのができるから、それが一番
問題起きないんじゃない? 出力がEUC-JPだと文字化けするブラウザは結構あるし。
PHP,DB内部はEUC-JPで、HTTP入出力はSJISでずっとやってますが、大きな問題は
おきてないな。
0282名無しさん@お腹いっぱい。02/02/26 01:58ID:myAGwwd4
しつもーーん
http://www.jlb.dyn.to/hsinstall/salsemng/
こんな感じで、みんなも、定期的に、バキュームしてる?
自分は、したことないぞーばきゅーむなんて。
0283名無しさん@お腹いっぱい。02/02/26 02:19ID:R0qwrTOR
野球ヲタワラタ

http://ime.nu/www.baseball-lover.com
0284名無しさん@お腹いっぱい。02/02/26 02:24ID:c48zylad
質問です。
interval型を使って年-日-時でデータを管理しているのですが、
365日で1年への繰り上がりを期待したら、
どうやら360日で繰り上がってます。

繰り上がり日数の指定ってできないのでしょうか?
0285名無しさん@お腹いっぱい。02/02/26 15:19ID:ws1pgQhy
>>281

 MIMEヘッダーに文字コードをつければ化けない。
 HTMLファイルにも、httpd.conf や .htaccess に AddType を
加える事で可能。
0286  02/03/24 17:12ID:S817rdf9
現在、PHP+PostgreSQLで小規模なDBシステムを開発していますが、
教えていただきたいことがあります。

それは、このシステムで出力されるデータをPDFファイルにしたいのですが、
これを実現するためには、PHPをインストールする際にpdflibを使用する旨の
オプションを指定する必要があることは知っています。

ただ、現在はインストールした後ですので、後でpdflibを追加することは
可能ですか?厨房なので、詳しい方法を教えてくれませんか?よろしくお願いします。
0287nobodyさん02/03/25 01:50ID:hKhhq3k3
>>286
 コンパイル時に組み込むものだから、後からは無理だと思われ。
 リコンパイルする手間はそんなに無いと思うので、やり直しをおすすめ。

> 厨房なので

 DBシステム開発自体を辞めておけ。
0288nobodyさん02/07/31 14:56ID:???
PHP4.2.2セキュリティー対応上げ

皆さん入れ替えましたか?
0289nobodyさん02/07/31 16:33ID:???
( ´,_ゝ`)プッ
http://freehome.kakiko.com/tuk/iiyo.html
0290nobodyさん02/09/01 20:10ID:h2ERcGeK
何でこのスレッド書き込みが無いの?
とりあえずあげ。
0291b02/09/01 20:21ID:hC+cV5mq
http://www.jsweb.sexheroes.com/index.html
0292お役立ちサイトです。02/09/01 23:25ID:eeJda9o6
究極の総合リンク集

http://home9.highway.ne.jp/cym10262/
0293ノンノン02/09/28 21:30ID:Mv9w8xYv
TIMESTAMP型の日時をPHPで表示する方法が良く分かりましぇんです。

$sql = "select to_char(nichiji, 'YYYY/MM/DD') from テーブル名";
$result = pg_exec($sql);

で、良いと思うのですが、

Warning: PostgreSQL query failed: ERROR: No such function
'to_char' with the specified attributes

っていうエラーが出ます。
これって、to_charが使えないってことですか?
仮に to_char が使えない場合、どうやればいいのでしょうか?
どなたかご教授願います。
0294nobodyさん02/09/28 21:38ID:B9guHGNW
整形してから引っぱり出すんじゃなくて
引っぱり出してから整形してください
0295hmk02/09/28 21:39ID:???
よーわからんが、nichijiは本当にtimestamp型になっているのかぇ?
0296ノンノン02/09/28 21:59ID:Mv9w8xYv
> よーわからんが、nichijiは本当にtimestamp型になっているのかぇ?

それは間違いないです。ハイ。

> 整形してから引っぱり出すんじゃなくて
> 引っぱり出してから整形してください

あいたたぁ。そういうやり方がありましたね。(なんて私は頭がカタイのか)
とすると、取り出したものが $nichiji に入ってるとすると

local($nichiji);

なんてものを使えば良いのでしょうか?
0297294 じゃないよ02/09/28 22:17ID:???
「引っぱり出してから整形して」というのはたとえば、
EXTRACT(YEAR FROM nichiji) AS nchj_y,
...
みたいに SQL を書くという意味ではないかな。ちょっ
と手間は増えるけど、漏れはいつもこうしてる。
0298ノンノン02/09/29 13:23ID:lz5l3CdA
なるほど、YEAR,MONTH,DAY というように取り出したいデータごとに
実行するということですね。
で、試してみました。
・・・結果はだめでした。
なので、簡単に

 select extract(YEAR from TIMESTAMP '2002-09-29')

としてやってみました。
・・・、これもダメでした。PHP を使ってもコマンドラインからも
結果は同じです。どちらも、こういうエラーが出ます。

ERROR: Function 'date_part(text, timestamp)' does not exist
Unable to identify a function which satisfies the given argument
types You will have to retype your query using explicit typecasts

何が原因なんでしょうか? PostgreSQLのバージョン?
ちなみにそのバージョンは、6.5.3 です。
029929702/09/29 13:49ID:???
>>298
7.0.2 なら select extract(YEAR from TIMESTAMP '2002-09-29')
は OK だね。6.5.3 だとダメ。

6.5.3 なら、
select extract(YEAR from DATETIME '2002-09-29')
で OK だけど、DATETIME は標準じゃないし、最近は
Postgres でも推奨されていないと思う。
0300ノンノン02/09/29 14:05ID:lz5l3CdA
やっぱりそうですか。
ということは、to_char でエラーが出るのもパージョンのせいですね。
レンタルサーバなのでどうにもできません。
フィールドのタイプを変えるしかないないですね。
原因が分かっただけでも良かったです。

みなさん、ありがとうございました。
また、何かあれば願いしますね。
030129702/09/29 14:17ID:???
>>300
date_part 関数使えば、フィールドの型は変えなくて済むと
思われ。でも標準(略
0302やりたいのに02/10/02 19:31ID:???
思い立ってから既に一週間。
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_ほにゃほにゃ系の関数を使う為には何をどう設定すればいいのかひたすら調査中です。
どなたか「おい、ここチェックしたのか」とか思い当たる事項があれば
突っ込んで下さると非常に喜びます(涙)
0303nobodyさん02/10/03 06:22ID:???
Apache,PHP4,PostgreSQL7でWEB鯖構築するやり方載ってる本あったからそれでも見れば。onLinuxだったけど。
0304nobodyさん02/10/03 06:33ID:???
Windows上でやったことないのでアレだけど、
WindowsってUNIXドメインソケット使えないよね?

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

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

みたいにして、あとは PostgreSQL の pg_hba.conf で
localhost からの接続の認証してやればいけそうな気がするが。
0305nobodyさん02/10/03 06:34ID:???
つーか、エラーメッセージ見れ。
pg_connect()したときにエラーメッセージ出るだろ。
0306nobodyさん02/10/03 06:38ID:???
スマソ。俺がカキコ見てなかった…。欝だ氏のう…。
0307やりたいのに02/10/03 11:24ID:???
お返事多謝です。非常に喜んでます♪

>>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");
 なるほど、ローカルホストだぜ!って明示的に指定するわけですね。

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

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



そんな漏れん家のサーバは1回/半年で十分だ。数秒で終わる(w
031030702/10/04 14:40ID: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とかその辺を更新した後、サーバごと再起動しないと駄目という
実に非現実的な環境になってしまいました(爆)

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

多謝多謝、多謝です〜!
0311nobodyさん02/10/06 21:27ID: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?
っていわれちゃうんだけど、解決方法わからないですか?

自分のパソコン上でやるとできるのですががが。
0312nobodyさん02/10/07 01:33ID:hvZZAVT1
>311
まんまやん!
-i と一緒に走らせろよ。

pg_ctl stop
pg_ctl start -o "-i"

だな
031331202/10/07 01:37ID:hvZZAVT1
追加
DBが別サーバなら pg_hba.conf の一番下辺りの trust あたりを見る。
んで、適時追加する(アクセスするサーバへの許可)。
↑の起動オプションの追加やconfの変更が出来ないんならわからん!
0314nobodyさん02/10/07 08:25ID:tYSAfVj4
つーか、ApacheとPostgreSQLが同じマシンで走ってるなら、
ふつーはUNIXドメインソケットで接続するんちゃうやろか。
-i オプションつけずに動かして。

なので、「host=$hst」つーのはいらないのでは?
031531202/10/08 00:18ID:OGtZEEu6
>>314
つ〜か、「自分のパソコン上でやるとできるのですががが。」だそ?
隣のパソコンにつなごうとしてうまくいかないのでは? と思うぞ...ふつ〜は。

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

そんなんされてたら、どうにもできんが(www
031631202/10/08 00:19ID:OGtZEEu6
をぉ!
隣のパソコン≠localhost ぢゃないか!!(w

逝ってくる...
0317nobodyさん02/10/09 01:18ID: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;
}
0318nobodyさん02/10/09 02:48ID:uMeBQ3Ig
カラムの型なんでしょう?
0319nobodyさん02/10/09 07:54ID:???
つーか、なぜ $sSQL を加工する度に echo して調べないのかと小一時間(略
0320nobodyさん02/10/16 17:38ID:???
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スクリプトが
何か特殊なことをしているのでしょうか?
0321質問ageです02/10/22 10:45ID:38ZRylkG
WEB データベースでは 1ページ毎に

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

とするのが普通なのでしょうか?
DB オブジェクト $db をグローバル変数として
他のページでアクセスする方法はあるのでしょうか。
0322nobodyさん02/10/22 10:47ID:???
> とするのが普通なのでしょうか?
普通。けど、ココはPHPのスレ。
0323nobodyさん02/10/22 11:08ID:???
>>322
ええ。PHPスレと知ってて質問しています。
PHP-4.2.2 を使用してます。
PHPでグローバル変数は扱えるのかな? と思って質問しました。

現在、最初に postgres の user、password を入力させて
それを各ページに POST して使い回して connect しているんですが
みなさん、このようにして使っているのでしょうか。
0324nobodyさん02/10/22 12:38ID:4eylDja6
>>323
session利用して保持すれば?
0325nobodyさん02/10/22 15:18ID:???
pgpconnect?
032632102/10/22 16:15ID:???
>>324
そうですね。
各ページで connect を行う場合はそうします。

ただ、DBオブジェクト(今回は Class のオブジェクト)を
グローバル化出来れば便利(早い) だと感じたのですが、
皆さんそのようには作られてないようで...
何か、問題あるのかな?
もうちょっと、色々勉強してみます。
0327nobodyさん02/10/22 16:43ID:???
>>321
>>325が自信なさげにつぶやいてるけど
http://www.php.net/manual/ja/features.persistent-connections.php
じゃ駄目なのかと?
032832102/10/22 17:21ID:???
>>327
ごめんです。
別に無視していた訳ではないです。>>325 さん。

今 Class と PEAR を使って色々勉強中でして、
「こんな風に出来ないものか?」と試行錯誤してます。
pg_pconnect は DB::connect( $dsn, TRUE ) で実現
出来るようです。
色々試してみたいと思います。
0329nobodyさん02/10/22 20:50ID:bCdHvFBv
>>326
DBへの接続で、パーシステントな香具師が居たかと...
「永続的接続」だっけか?

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

つ〜か、↑は、デバッグ時にはまった場合の話ね。
きれいになったコードでは問題ないはずだよ。
0330教えて君02/10/30 20:04ID:???
上の永続的とかは関係なくて、
最初にconnectしてから
"begin"を宣言しておいた後、
放置してPHP終了した場合って、
"commit"しなかったんだから"rollback"しなくても良いんですよね?
pg_closeは省略できるらしいし。
どうなの?
033133002/10/30 20:05ID:???
要するに"rollback"も省略できるかってことです。
0332nobodyさん02/10/30 20:11ID:CX80yU9D
どこが2重カキコなんじゃボケェ!
2重カキコじゃないってば!!>ERRORさん

rollbackは今までの作業を捨ててその後で新しく作業するのに使うんですよね?
取消で終了するなら言わなくてもいいっすよね?
033333002/10/30 20:12ID:CX80yU9D
>>332
俺です(鬱)
033433002/10/30 20:20ID:CX80yU9D
http://php.lamphost.net/manual/ja/print/ref.pgsql.php
> BEGINで始まり、 そのトランザクションが有効な場合はCOMMITまたは ENDで終わります。
> トランザクションが失敗した場合、 そのトランザクションはROLLBACKまたは ABORTにより閉じる必要があります。
> ラージオブジェクトリソースを閉じる前に接続リソースを閉じないように して下さい。
エラーでこけたらどうなるんすか?
033532902/10/30 21:02ID:6KbHJvYg
>334さんへ

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

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



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

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


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

頼む!
0336山崎渉03/01/15 13:47ID:???
(^^)
0337nobodyさん03/01/18 03:13ID: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の設定をしないといけないのかな?と思いましたが、
なにか参考になる話を聞かせてくれませんか?
033833703/01/18 03:15ID:bdZI9lM1
エラーメッセージのうち user の箇所は nobody でやったりと
他のuserを使ったりはしています。
0339nobodyさん03/01/18 03:35ID:???
>>337
pg_hba.confだろ。
034033703/01/18 03:49ID:???
>>339

そうですか
調べてみます。
ありがとうございました。
0341nobodyさん03/02/26 18:10ID:???
どうしても2カラムで1キーになるテーブルが多いのですが、

a 102
b 2003
aとbでキー

そういう場合は

c 1002-2003
というカラムを作った方がいいですか?
0342nobodyさん03/02/28 12:52ID:Gr9BwE/o
>>351
勉強し直してきてください
0343nobodyさん03/02/28 19:20ID:qSGW/gfl

    ☆^〜^★【新着情報追加】
   http://sagatoku.fc2web.com/
  あなたの探し物こちらで見つかります
■ このスレッドは過去ログ倉庫に格納されています