PHP + PostgreSQLat PHP
PHP + PostgreSQL - 暇つぶし2ch558: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)

609:nobodyさん
04/03/16 03:09 0I5atoz5
>>608
すいません、initdbしちゃいました。
(そしたらあっさり動きました!)
今回のトラブル中でgoogle引いているなかで一つ気になったのが
hba.confでのlocalの設定の書き方なんですが、
どこだか忘れましたがあるサイトで
local  all  all  trust
ってー書き方しているページがあったんですが
URLリンク(ml.postgresql.jp)
とかオンラインマニュアルなんかは
local  all  trust
ですよね?
見間違えかナア?

610:nobodyさん
04/03/16 03:10 0I5atoz5
失礼、お礼を書き忘れた!!
606さん
608さん
どうもありがとうございました!

611:nobodyさん
04/03/16 08:31
>>609
7.3あたりで 項目が増えたんじゃなかったかな?
changesを見てマジっすかって思った記憶があるよ。

612:nobodyさん
04/03/18 05:39 zQ2yHGPu
>>611


pg_hba.conf の詳細は、PostgreSQL のドキュメントの 6.1. The pg_hba.conf fileにあります。



セカンダリパスワードが廃止されました。
USER カラムが追加されました。
データベースとユーザをカンマ区切りで列挙できるようになりました。 また、+グループ名でグループを、 @ファイル名でデータベース名またはユーザ名を記述したファイルを指定できるようになりました。
キーワードsamegroupが追加されました。

だそうです。
URLリンク(www.us.postgresql.org)

613:nobodyさん
04/03/20 09:22
PHPもPostgreSQLも今日から挑戦してみる新参者です。

┌─┬─┬─┐
│○│△│×│
├─┼─┼─┤
│◎│□│◇│
└─┴─┴─┘
TABLEを用いてDBの値を上記のように表記したいのですが
PHPとPostgreSQLの組み合わせの定石などありますでしょうか。

PHP変数のスコープ範囲をグローバルとして確保するなら
SQLから変数へ一度に値を確保しておいて
<TABLE><TR><TD><?echo $変数1?></TD><TD><?echo $変数2?></TD>......
などとできそうかなと考えたのですけれど、下策でしょうか。


614:nobodyさん
04/03/20 10:06
>>613
プログラミングそのものが始めてというならそれでも構わんが、
とりあえずやって慣れないとな。

次ステップとして、foreach文でループしながら書き出す。
その次は、PEARのHTML_Tableを使って書き出す。
また、その次はテンプレートを使って書き出す。

手法はいろいろあるから、技術レベルとサイトの規模に合わせて
使い分けすりゃいいべ。

615:nobodyさん
04/03/20 11:25
>614
つまり各個別で変数をひとつずつ出力するよりも
タグまで出力することを一区切りとして実装した方が
負荷が少ないということになるのですね。

テンプレートは自分でクラスを作ればいいということでしょうか。
HTML_Tableは<TBODY>や<COL>要素が出力されないようなので
自分で作ってみようと思います。
ありがとうございました。


616:nobodyさん
04/03/22 16:39 QoPkBfoi
webから入力されたe_mailアドレスをDBに貯めておいてcronで一定時に
配信するプログラムを作ろうと思ったんですがそのcronで呼ばれる方のphpは
コマンドライン版(プログラムの頭に#/×××/×××/php とか付く奴)にあたると思うんですが
デバグ時にコンソールから直で呼び出した時にエラーをモニタにだしたいんですが
なにかオプション付けて実行とかどなたかご存知でしょうか?

617:nobodyさん
04/03/22 17:05
>>616
PHPのマニュアルの PHPをコマンドラインから使用する を見てみれ。

618:616
04/03/23 04:32 PH/L9hMF
>>617さん
#!/usr/bin/php -qを頭につけて
クーロンと直接実行と両方試したんですが
エラーもはかずに配信もされないんですが
コマンドライン版特有のデバグ方法等ありましたら
url等情報頂けたらありがたいです。

619:nobodyさん
04/03/23 05:59
>>618
617ではないが、
MTAのログは?

620:616
04/03/23 18:38 zP9z4yZ0
>>619
/var/log/mail_logには一切メールを送った形跡なし…。
何故エラーすら吐かないんだろう?

621:nobodyさん
04/03/23 19:03
>>620
メール送信処理のかわりにファイル作成してみるとか
そのファイルに変数の値とか出力したらいろいろわかる可能性も

622:616
04/03/23 20:48 zP9z4yZ0
>>621
ドモです、さっそくやってみます。


623:nobodyさん
04/04/06 12:05 irRO9IOr
質問です。。。

Postgresのビット演算についてお力をお貸しください。
text_a varchar(5) と宣言してある所に 00110 の文字列が入っています。
それに対して 00010 の文字列で&演算したいのですが、エラーになってしまいます。

■エラーが出た部分(一部抜粋)
WHERE ( CAST( text_a AS bit ) & B’00010’ ) > B’00000’

■エラー文
varchar から bitへの変換ができないといわれます。
何かこれを回避する方法または別の手段が無いでしょうか?
お力をお貸しください。


624:nobodyさん
04/04/06 13:28
>>623
ビット型に変換しなくとも。
WHERE (text_a::int & '00010'::int) > 0
で、目的は達成すると思われ。


625:623
04/04/06 14:36
>>624
アドバイスありがとうございます。
早速やってみます!

626:623
04/04/06 14:48 irRO9IOr
>>624
結果報告です。
ERROR: Cannot cast type 'varchar' to 'int4'
でダメでした。とほほ

627:624
04/04/07 16:53
text 型からint型にはキャスト出来たので、Varchar型も出来ると思っていた。

(text_a::text::int & '00010'::int) > 0
ならどぉよ。

628:623
04/04/07 19:14
>>627
できました!
::text::int 2重に変換できるんですね。
勉強になりました、ありがとうございました。

629:nobodyさん
04/04/07 22:11
ダウンキャストなのかコンバートなのか分からなくなってくるな。

630:nobodyさん
04/04/18 00:22 jle0qDKt
DBサーバとWebサーバを物理的に同一の
マシンで兼用させることは出来るのでしょうか?
その場合IPが一緒になると思うのですが試したことのある方がいたら
教えてください。

ハードディスクを2つのパーティションに切って、片方をDBサーバ
OS:Linux
DB:Postgres
もう片方をWebサーバにしようと考えています。
OS:Win系
HTML、PHPで携帯サイトもどきを作ろうと考えています。

資金の都合があり、一台のPCで済ませようとしているのですが
根本的にありえない質問でしたらお許しください。
実際のサイトではまずありえない環境なのはわかっています。
他サイトを調べたのですが情報を得ることが出来ませんでした。
最後に来たのがここなわけで・・・。

631:nobodyさん
04/04/18 00:25
>>630
>実際のサイトではまずありえない環境なのはわかっています。
おいおい

632:nobodyさん
04/04/18 00:42
>>630
なぜDBとWeb両方Linuxで動かさないんだ?

633:nobodyさん
04/04/18 00:49 gbPENzjB
( ゚д゚)ポカーン

634:nobodyさん
04/04/18 00:50
>>630
うるさいよマルチ野郎
スレリンク(hp板:17番)

635:630
04/04/18 01:32 jle0qDKt
>>634
すみません。ルール違反と知りつつもマルチしてしまいました。

>>632
仕事でやっている環境に合わせて勉強したかったもので。

>>631
説明不足でした。すみません。
公式サイト等ではサーバー負荷を考慮してDBとWebサーバを
別々にするので、ほとんど無いという意味で書き込みしました。
非公式サイトの開発・運用経験をお持ちの方ならやり方を
知っているのではないかと思い質問させてもらいました。

634のリンクさきのスレに書き込んでいただいた方のおかげで、
なんとか出来るかもしれないことがわかりましたので、
今色々と調べています。

636:nobodyさん
04/04/18 01:41
>>635
PC初心者板へ行ってくださいな。
そして「2つのパーティションに別々のOSを入れて同時に走らせたい」と言うんだよ。

637:nobodyさん
04/04/18 02:54 XCZiYJqw
「札」という文字をテーブルに入れようとすると
次のようなエラーが出ます

Warning: pg_query(): Query failed: ERROR: invalid byte sequence for encoding "EUC_JP": 0x8e44

どうすればよいのでしょうか?

638:nobodyさん
04/04/18 04:06
「札」が8E44になるのはSJISの時でないのん?
そりゃDBも往生しまっせ

639:nobodyさん
04/04/25 13:29
set client_encoding to 'sjis';


640:nobodyさん
04/04/26 02:10 WthorSeH
>>639
それやったけど駄目でした・・・

641:nobodyさん
04/04/27 23:01
mb_convert_encoding('札','EUC-JP','SJIS')すれ

642:nobodyさん
04/04/28 01:20 v4hgreAJ
>>641
できました。
ありがとうございます。

643:nobodyさん
04/05/01 13:52 mFnw69ow
ERROR: could not extend relation "hogehoge": No space left on device
HINT: Check free disk space.

ってエラーが出るのですが何が原因ですか?
サーバースペースは余ってる筈なんですけど、、、。

644:nobodyさん
04/05/01 14:09 jvss00O+
PHPとCGIを同じファイルで使う事は可能ですか?

645:nobodyさん
04/05/01 17:49 wi9QOksv
また難解な質問が来たな…。>644

とりあえず「可能」と答えておこう。
質問の意味がまったく分からないけど。


646:nobodyさん
04/05/02 20:46
>>644
>>645
こういうことじゃない?
-hatena.cgi------------------------------
open(IN, "datafile.txt");
while ($xx = <IN>) { print $xx; }
close(IN);
<?php
$fp = fopen('write.txt', 'w');
fputs($fp, "****\n");
fclose($fp);
?>
----------------------------------------
だったら俺の知ってる限りでは無理

647:nobodyさん
04/09/11 05:17:25
Postgresの配列型を、PHPの配列にする時どうしてる?
正規表現とかな?

648:nobodyさん
04/09/11 05:24:59
{}取り除いて、,でexplode

649:nobodyさん
04/09/11 13:54:57
>>648
{",", "}"}とかに対応できない悪寒

650:nobodyさん
04/09/11 15:50:56
>>647-649
が解決できたら PostgreSQL の配列型は HTML のチェックボックスを
格納するのに使えそうだね。

651:nobodyさん
04/09/11 18:00:56
>>649
再帰呼出を使えば出来るでしょ。

652:651
04/09/11 18:08:47
スマソ勘違いしてた。
デリミタと囲い子の問題ね。

653:nobodyさん
04/09/11 18:15:03
>>651
多次元配列じゃなくて、特種文字の扱いが問題だと思うのですが・・・・。
preg_match_allやpreg_splitでも正しくパースするのは難しそう。
#PostgreSQLのソースにヒントがあるかな?
PEAR MDBのキャスト機能で配列型も変換してくれるようになったら嬉しいな。

654:653
04/09/11 18:16:21
ちょっと遅かった... orz

655:651
04/09/11 18:24:02
>>653
fgetcsvの第一引数が文字列であるような関数があれば可能なんだよな。

656:653
04/09/11 21:16:41
>>651
自分もそれ考えてた。
一次元の配列に限定すれば、両端の{}を削ったのを一時ファイルに書き出して
fgetcsvすれば","もうまく扱えるはずだけど、オーバーヘッドが大きいし
それ以前にそんなコード書きたくない。
fgetcsv自体がバギーかつ仕様がコロコロ代わってるのも困りもの。

一次元の配列で、数値しか格納しないという前提なら>>648でいけるし、
それだけでもけっこう使えるとは思う。

配列型を活かしたクエリを発行しないならserializeしてTEXT型で保存
→fetchしたデータをunserializeで十分なわけだけど。

657:nobodyさん
04/09/25 02:40:26
質問させてください
pl/pgsqlを触り始めたのですがエラーに悩まされております
下記のように引数にテーブル名をいれて動かそうとすると
エラーになってしまいます。テーブルの実名をそのまま入れた時は動きました。
うまく動かす方法はないでしょうか?
よろしくお願いします。


CREATE OR REPLACE FUNCTION test_function(text) RETURNS INTEGER AS '

DECLARE
IN_table_name ALIAS FOR $1;
data_cnt INTEGER DEFAULT 0;
rec RECORD;
BEGIN

FOR rec IN SELECT * FROM IN_table_name LOOP
data_cnt := data_cnt + 1;
END LOOP;

RETURN data_cnt;
END;
'
LANGUAGE 'plpgsql';


658:nobodyさん
04/09/25 03:12:19
>>657
CREATE OR REPLACE FUNCTION test_function(text) RETURNS INTEGER AS '

DECLARE
IN_table_name ALIAS FOR $1;
data_cnt INTEGER DEFAULT 0;
rec RECORD;
sql TEXT;
BEGIN
sql := ''SELECT * FROM ''||IN_table_name ;
FOR rec IN EXECUTE sql LOOP
data_cnt := data_cnt + 1;
END LOOP;

RETURN data_cnt;
END;
'
LANGUAGE 'plpgsql';

659:nobodyさん
04/09/25 03:18:53
よくわかりました! ありがとうございます
早速試して見ます

660:nobodyさん
04/10/12 21:01:41
わけあって
httpd.confのデフォルトキャラクタセットSHIFT_JISなのね。
postgreはもちEUCなんだけど
PHP使ってなんかするとき問題あっか?

661:nobodyさん
04/10/26 03:37:10
SET client_encoding=SJIS;

662:661
04/10/26 03:40:51
寝ぼけてレスしたけど、よく見ると半月も前じゃん

663:nobodyさん
04/10/26 15:42:23
わはは、なんかワロタ。

そもそもhttpd.confのDefaultCharsetとPostgreSQLのEncodingは全く関係ないし、
せめて気にするなら、PHPの内部コードと>>660の頭だな。

664:ド素人
04/11/23 11:23:13 3+AQgTJt
psqlで  \(バックスラシュ) をインサートしようとするとエラーになります。エンコードはEUC_JPなんですが、、、どうすればいいのでしょうか?


665:ド素人
04/11/23 11:36:12 3+AQgTJt
confのclient_encoding とかをEUC_JPとかにするんでしょうか?


666:ド素人
04/11/23 11:41:25 3+AQgTJt
寝ぼけて書いたけど、半月前の板じゃん、わはは。なんかワロタ。

667:ド素人
04/11/23 11:42:27 3+AQgTJt
とかい言いつつ、、レスを待ちつづける俺。
切羽詰ってたりして…

668:nobodyさん
04/11/23 11:45:21
sql書け。

\を\\に置き換えてるか?

669:ド素人
04/11/23 11:45:43 3+AQgTJt
マジ、だずけでほじぃ。。。

670:ド素人
04/11/23 11:47:21 3+AQgTJt
\を\\にしても同じでした。。エスケープってことですよね?

671:nobodyさん
04/11/23 11:50:13
insert table_name (hoge) values ('\\')

でinsert出来ない?

672:nobodyさん
04/11/23 11:50:49
insert into table_name ... だった

673:ド素人
04/11/23 11:52:21 3+AQgTJt
sqlはこんな感じでございます↓
$inData = array(
'id'=>$sh->dba->nextId('tbl_bbs_id'),
'bid'=>$HTTP_VARS['bid'],
'id_no'=>$aUser['id_no'],
'title'=>ココ→ '\\',
'body'=>$VARS['body'],
'del_flg'=>'N'
)

674:ド素人
04/11/23 11:54:36 3+AQgTJt
単純なSQLでinsertしてみたのですが、、同じでした。

675:ド素人
04/11/23 12:00:53 3+AQgTJt
dbが壊れてるんでしょうか?通常はありえないんでしょうか?

676:ド素人
04/11/23 12:03:12 3+AQgTJt
フィールドタイプが「text」なんですが、これは問題ないでしょうか?

677:nobodyさん
04/11/23 12:03:13
phpとsql、それぞれのエスケープで\\\\

678:ド素人
04/11/23 12:08:44 3+AQgTJt
ありがとうございました!!!!!!
は、、はいった。。涙が・・・

679:ド素人
04/11/23 12:14:09 3+AQgTJt
実はezのハートを入れようと、、2日寝ておりませんでした。。
^N\264の場合は ^N\\\\264に変えればでるのでしょうか?
もしも、ご存知でしたらご教授いただけますでしょうか?
場違いでしたら、退散いたします。。

680:ド素人
04/11/23 12:22:11 3+AQgTJt
nobody殿に感謝しつつ、退散いたします。
nobody殿、バンザーイ!バンザーイ!バンザーイ!

681:nobodyさん
04/11/24 09:19:58
どういたしまして^^;

682:nobodyさん
04/11/24 11:35:02
test

683:nobodyさん
04/11/26 07:18:01
nobodyknows

684:nobodyさん
05/02/23 08:53:54 mE2XQAit
あげ

685:nobodyさん
05/03/06 00:22:16 AGppAUzL
ちょっと詰まっていることがあるのですが、わかる方がおられましたらアドバイス願います。
環境は、Linux(CentOS4.0)、Apache2.0、PostgreSQL7.4、PHP4.3(mbstring、pgsql付き)です。

---page1.php---
<?php
$page = "ページ1";
require ("search.inc");
?>

---page2.php---
<?php
$page = "ページ2";
require ("search.inc");
?>

---search.inc---
<?php
$con = pg_connect("dbname=db");
$result = pg_query($con, "select * from table where page = '$page'");
# 以下、内容の表示
?>

という構成で、要するに
page1.phpでは、データベースからpageフィールドが「ページ1」のレコードを表示し、
page2.phpでは、データベースからpageフィールドが「ページ2」のレコードを表示する、ことを意図しています。

ところが、現在生じている問題は、
page1.phpでもpage2.phpでも、「ページ1」「ページ2」両方のレコードが表示されてしまうのです。

他のページでも同様にデータベースからの検索・表示を行っているのですが、
そちらは問題なく、「ページ1」と「ページ2」だけが両方混ざってしまいます。
1とか2とか全角数字が問題なのでしょうか。両方selectされてしまうのが不可解なのですが。

686:685
05/03/06 00:44:38
補足です。

■page1.phpを、以下のように書き換えても、結果は同じでした。

---page1.php(改)---
<?php
$con = pg_connect("dbname=db");
$result = pg_query($con, "select * from table where page = 'ページ1'");
# 以下、内容の表示
?>

■また、$pageがひらがな・カタカナ・漢字のみの場合は、正しくselectされます。

---page3.php---
<?php
$page = "ほげほげ";
require ("search.inc");
?>

■データベースの内容をチェックしましたが、
 pageフィールドにはきちんと「ページ1」「ページ2」という値が入っています。

687:nobodyさん
05/03/06 01:08:04
>>685
原因わからない(´・ω・`)ショボーン。
Postgresの設定いじってログにクエリを表示させて見てはどうだろうか。(既存のシステムだと無理だろうけど)

それとpage1.php page2.php page3.phpと分けないで
search.php?page=page1
とかしてやったほうがいいんじゃないか?

688:nobodyさん
05/03/06 01:32:40
ロケールが設定されているとか。
show lc_collate;
show lc_ctype;
辺り。

689:685
05/03/06 16:56:51
レスどうもありがとうございます。

>>687
> それとpage1.php page2.php page3.phpと分けないで

実際のpage1.php、page2.phpは、HTML部分が異なるので、別ファイルにする必要があるんです。

>>688
> ロケールが設定されているとか。

なるほど、それが原因ですね、きっと。
しかし、ロケールの設定についてちょっと調べてみたんですが、
何だか難しくてよくわかりませんでした・・・orz。
これからもっと勉強します。

ちなみに、「ページ1」「ページ2」の表記を「ページ1」「ページ2」と半角数字に変えてみたら、
きちんとselectされるようになりました。当面はこれでしのぐことにします。

FedoraCore2では、こういう問題は生じませんでしたから、
OSにも左右されるみたいですね。同じRedHat系なんですが。

690:nobodyさん
05/03/06 22:00:03
携帯サイト作ってるんですけど
開発環境のWEBサーバー(Apache2.0 Windows2000)では動作するんですが、
本番環境のWEBサーバー(Apache1.3 Linux)へ移すと「接続先のサーバは現在ご利用できません(502)」と出ます。

502のエラーとして調べた結果「ゲートウェイもしくはプロキシサーバが上流から無効なレスポンスを受け取った」とのことです。

このエラーの要因として考えられるのはHTTPD.CONFファイルの設定の違いでしょうか?
とすると、対処法として、本番環境のHTTPD.CONFを開発環境と同じにするしかないでしょうか?

691:nobodyさん
05/03/07 08:44:23
>>690
ここはPHP postgreSQL のスレです

692:nobodyさん
05/03/14 10:56:04
テーブルがなければ作る、というのはどういうやり方がスマートなんでしょうか。

693:nobodyさん
05/03/14 13:59:50
>>692
テーブル名一覧テーブルを参照して、テーブルが
無ければトランザクション内でテーブルの作成と
テーブル名一覧テーブルの更新を行う。

694:nobodyさん
05/03/17 08:48:05 6RtiKHZ9
学ぶのに最適なサイトを教えてください

695:nobodyさん
05/03/17 16:02:20
マニュアル+MLで

696:nobodyさん
05/05/12 17:12:14
一寸煮詰まってしまってまして、よろしければアドバイスいただけないでしょうか?
Select (Case When A.Field = '' Then 0 Else A.Field End)::integer From Table as A
というSQLを発行し、A.Fieldが''(空白文字列)だった場合0を出したいのですが、
invalid input syntax for integer:
と、エラーが出てしまいます。
これがもし、A.Fieldが''ではなく、NULLだったらうまくいくのですが。。
この問題を回避する何か良い方法はないでしょうか?

よろしくお願いします。

697:nobodyさん
05/05/12 22:55:49
>>696
A.Fieldは文字列ですよね。数値(integer)に変換できない文字列が含まれているんじゃ?

698:696
05/05/13 21:19:35
>697
レスありがとうございます。
そういう事ではなく、A.Fieldが’’(空白文字列)の場合にエラーが出るのですよ。
Select (Case When '' = '' Then 0 Else '' End)
とした場合0が出て欲しいのにエラーになっちゃうんですよね。ちなみにElseの後が1とかなら問題なく0が帰ってきます。
ThenやElseの後空白文字列がいけないのは分かったのですが、それを回避したいからCase使ってるのに駄目って
なぜだ~って感じなんです。
言葉足らずですいません。

699:nobodyさん
05/05/13 22:48:42
>>698
> Select (Case When '' = '' Then 0 Else '' End)

??? nanja korya?
何をしたいのか余計にワカランなった。

700:nobodyさん
05/05/16 22:49:41
>>698
SELECT (CASE WHEN field='' THEN '0' ELSE field END)

701:700
05/05/16 22:50:28
SELECT (CASE WHEN field='' THEN '0' ELSE field END)::integer ね。

702:nobodyさん
05/10/11 18:34:00 A0maUghJ
すいません、質問です。

Linux上にpostgresとPHPがインストールされていますが、
PHPからpgsqlを呼び出す事ができません。
phpinfo()で設定されてない事が確認できました。

で、調べて見た所オプションをつけてコンパイルしなおせば
使えるようになるみたいなんですが、
他に方法はありませんか?

Windowsだとphp.iniを書き直すだけで設定できたのですが
こういうのってLinuxだと無理なんですか?

703:nobodyさん
05/10/12 05:28:13
pconnect対策でpgpool入れたんだけどpgpoolにpconnectしても接続数大杉になるよね?

「pgpoolにはconnectで。postgresへの直connectより軽い」が正解?

704:nobodyさん
05/10/12 08:32:39
>>702
phpをどうやってインストールしたかによる
rpmならphp-pgsqlのパッケージだけを追加インストールすればよい
ソースからインストールしたのなら全部コンパイルしなおすかphpizeでext/pgsql/のみコンパイルして追加する

705:nobodyさん
05/10/13 21:19:25
phpはソースから入れる方がいいように思う。
バージョンによる挙動の違いとかあるから。
うかつにアップデートするとまずいことになる。

706:nobodyさん
05/10/18 17:46:31
portsでインスコしてportupgradeでアップデート終了
手抜きする為にFreeBSDを使うのが漏れのジャスティス(´・ω・`)

707:nobodyさん
05/10/18 20:16:46
yumやapt-getもあるでよ

708:nobodyさん
05/11/05 16:52:03 3i8SmZZ/
つーか、ちゃんとメンテナンスされてるパッケージシステムを使えばいいだけ。
PHP+DBなんてOSはどうでもいいし。

しかし、PHP+PostgreSQLなんて原価安い分買い叩かれて仕事稼げないのによくやるねえ。
SunEnterprise+Solaris+Oracle+iPlanet+WebLogicの仕事が一番稼げるよ。

709:nobodyさん
06/01/04 20:58:12 D32qMl2A
おまえらあけおめ

710:nobodyさん
06/01/06 14:57:06 XMuialze
PostgreSQL用の追加モジュールのpgsql.soをインストールしたいのですが、
phpizeコマンドが使えません。phpizeは/usr/local/binに入っています、
方法としては、/usr/local/src/php/ext/pgsqlに行き、phpizeを実行する、
と、bash:phpize:command not found となってしまいます。
まったくの初心者で、なにを治していいか分かりません、どなたかご指導願います。

711:nobodyさん
06/01/17 18:44:37
Fedora core4にPHP5.1.2、postgres7.3.4、apache2.2.0を放りこまにゃならんのだけど
インストールの順番って特に考えんでも問題なし??

…PHP5.1.2なんてまだ使いたくねぇよorz

712:nobodyさん
06/01/17 18:45:26 0H6x+8rL
ゴメン、ageてみる

713:nobodyさん
06/01/17 19:01:48
>>711
分けてあるから平気よ。

枯れた環境がいいならFC4なんて使うなよ。
顧客の要望でFC4なら諦めろ。

714:nobodyさん
06/01/17 19:27:58 0H6x+8rL
>>713
ありがとです。
FC4でデフォルトな装備品で気持ちよく開発したいもんだが、
隅から隅までお客サマの要望ときたもんだ(TT)
posgreをmakeしてるけどwarning吐きまくりだわ。いけるのか7.3.4
ready install!とか言われても不安が尽きないですよ。



715:nobodyさん
06/01/17 19:32:49
>>711
なんでわざわざ7.3.4なんだ?
クラは8.1.xの存在知ってる?改良点についても。

716:nobodyさん
06/01/17 19:33:43
>>711
俺はFC4じゃないけど、CentOS4に入れてみた。
PHP5.1.2、postgres8.1.2、apache2.2.0。
順番はApacheかPostgresが最初で、最後がPHP。


717:711
06/01/18 10:14:02
>>715
結構古くから使ってるDocomoのサイトなんだけど、
それのAU版を新しく作るんだわ。
まったく別にもう1つDBサーバー作るんだけど、
データの共有できる部分が多いからPostgresのバージョンは変えたく無いんだと。
クラの担当者本人が苦笑してたぐらいだからな~~orz
「サーバ担当チームが変更してくれん」ってさwww一体誰のこだわりなんだか

>>716
同じ順番になってる。なんかホッとしたー(・∀・)

昨日は私用で帰っちゃったので本日中に開発環境整えれるように頑張ります

718:716
06/01/18 10:40:20
>>717
データの共有出来る部分?
よくわからんけど、Postgres7,3,3からPostgres8.1.2に
データ移行したけど、全然問題なく簡単に出来たよ。
パフォーマンスも段違いだし、8にした方がいいよ。

719:711
06/01/18 11:24:09
>>718
分かっちゃいるんだけどねぇ…コレはお客サマのお告げなので…(TT)
もう本番サーバー設定しちゃったらしいし。しゃーないわ。



720:nobodyさん
06/01/18 23:58:58 BuFau/7y
PHPにはPostgresqlが似合ってるな(中途半端!)
PerlにはMysqlが似合ってるな(早い!安い!)
JavaにはOracleが似合ってるな(めんどくせー!結構金かかるな!)

PHP+Oracleの案件って見たことねえ
Perl+Postgresqlの案件もあんまり見たことねえ(たまにあるね)
Java+Mysqlの案件は見たことねえ

きっとコストと処理速度と規模で決まっちゃうんだろうな

721:nobodyさん
06/01/19 14:44:01
Oracle の JDBC ライブラリは普通にバイナリで出回ってるが
Perl や PHP から Oracle を引くにはドライバを make せんといかんので面倒がられる

PostgreSQL と Perl の組み合わせは、PL/Perl が最強だと思うんだが
現場で使われてるところを見たことがない

Java と MySQL は、よく知らないんだが
昔は UTF-8 対応が足枷になったりしてたのか?

722:nobodyさん
06/01/21 04:00:36
>>720
Java+Oracle を PHP + Oracle でリニューアルした案件は結構見る。

723:nobodyさん
06/01/26 03:40:56
PHP5.1のrpmが落ちてないなぁ。
エロイ人、お願いします。

724:nobodyさん
06/01/26 03:57:34
>>723
すれ違い。
ディストリビューションかかないと解らないし。

725:nobodyさん
06/01/29 19:06:11
Perlなら、Oracleについてくるじゃん。
あれって、Windowsだけだっけ?

726:nobodyさん
06/01/30 16:07:49
Oracle は Zend と提携したし

727:nobodyさん
06/01/30 23:33:48
しっかし 8.1 は速くなったのー。

728:nobodyさん
06/05/03 21:26:11
もはやMySQLよりも速い気がしますね。

729:nobodyさん
06/05/08 00:57:02
いや、実際速いよ。

730:nobodyさん
06/07/07 12:29:39 AUesg1Gs
はじめまして。
RedHatLinux8.0上でPHPとpostgreSQL7.2.3をつかって顧客管理システムでも
つくろうかなと思っていたのですが、PHPは正常にインストールができてpostgreSQLの
インストールした後の環境変数の設定をしなくてはいけないらしくて、ホームディレクトリ
ディレクトリのbashrcにスクリプトを追加しなくてはいけません。
このpostgreSQLのインストール後の設定についてどなたか教えていただけませんでしょうか?

ちなみに参考文献は
「php×postgreSQLでつくる最強webシステム」
です。
どうかよろしくお願いします。


731:nobodyさん
06/07/07 12:56:12 AUesg1Gs
先ほどの730のものです。
質問があいまいになっていたので、再度カキコさせていただきます。
postgreSQLのインストール行った後に、ホームディレクトリに

POSTGRES_HOME=/usr/local/pgsql/
export PATH="$PATH":/usr/local/pgsql/bin
export PGLIB=$POSTGRES_HOME/lib
export PGDATA=$POSTGRES_HOME/data
export MANPATH="$MANPATH":POSTGRES_HOME/man

という内容を追加し、「source ~/.bashrc」を実行するとあるのですが、この
bashrcというファイルがどこにあるのかという事と、このホームディレクトリとは
はどこを指しているのかがよくわかりません・・・・

732:nobodyさん
06/07/07 12:58:10
>>730
また古い物を、
で、環境設定ならP87から書いてある通りで桶だと思うが。
viでもなんでもエディタでpostgresのホームディレクトリにある
本通りだと/usr/local/pgsql/.bashrc にP88の内容通りすりゃいい。

ログイン時に.bashrcを読み込んでくれないのなら.bash_profileの
中身を確認。RedHat系なら読み込んでくれると思ったが。

733:nobodyさん
06/07/07 13:08:50 AUesg1Gs
nobody様

ご助言ありがとうございます。
参考にさせていただきます!!

734:nobodyさん
06/07/07 14:56:02 AUesg1Gs
/usr/local/pgsql/.bashrc を書き換えたいのですが、bashrcというファイル名
のファイルが見つかりません。windowsのようにフォルダオプションに相当する
コマンドか何かあるのでしょうか?

735:nobodyさん
06/07/07 15:41:15
>>734
無ければ作ればいいんだけど・・?
通常は隠しファイルで見えないだけで、 ls -la とかやってみては?

736:nobodyさん
06/07/07 22:39:50
/usr/local/pgsql/.bashrcでいいの?

737:nobodyさん
06/07/08 09:08:12
>>736
ログインしたユーザーに環境変数をセットしてあげたいんでしょ?
だったら、その人のホーム直下に作らないとダメね。

 ~/.bashrc ね

738:nobodyさん
06/09/27 15:35:11
postgreSQL 7.3.1 + PHP
です。
$sql = "DROP TABLE IF EXISTS test";
pg_query($sql);

という感じで、 test というテーブルが存在する場合に DROP TABLEさせたいのですが
テーブルの存在はどのように判定したらよいでしょうか

上記では、pg_query がエラーを出してしまいます。

739:nobodyさん
06/09/28 02:43:52
IF EXISTS ってmysqlじゃないですか

740:nobodyさん
06/10/01 13:01:09
>>738
URLリンク(www.postgresql.jp)

741:nobodyさん
06/10/01 21:50:33
以下のコードで、pg_insert()のエラーが出力されないのですが、エラーを取る方法はあるのでしょうか?

//'bool'カラムでエラー
$data = array('number' => 3, 'bool' => 'trueee', 'time' => date('Y-m-d H:i:s'));

$res = pg_insert($con, 'test', $data);
if (!$res) echo pg_result_error($res);

----------------------------------------------------------

pg_query()の場合は正常にエラーが出力されます。

$date = date('Y-m-d H:i:s');
$res = pg_query($con, "insert into test(number, bool, time) values(5, 'trueee', '{$date}')");
if (!$res) echo pg_result_error($res);

Warning: pg_query() [function.pg-query]: Query failed: ERROR: invalid input syntax for type boolean: "trueee"

環境
 windows XP
 PHP 5.1.4
 Apache 2.0.58
 Postgres 8.1.4

または
 FreeBSD 6.1
 PHP 5.1.4 or PHP 5.2
 Apache 1.3.37
 Postgres 8.1.4

742:nobodyさん
07/06/26 15:17:35 KNA8dvka
phpから、db_dumpの実行方法がわかりません。
もしかして、「psql.exe」を呼び出して実行させるプログラムが別途必要になってくるのでしょうか?
psqlからなら、出来たのですが、、、


743:nobodyさん
07/06/26 15:25:27 KNA8dvka
具体的には「pg_dump」を実行させて、データのバックアップをとりたいのですが、
pg_dump test_db > database_name.sql
をPHPファイルのどこに記入したら良いのかわからないです。


744:nobodyさん
07/06/26 17:39:31
system()で実行したらどうでしょうか

745:nobodyさん
07/08/25 00:24:48
文字コードの変換は、
PostgreSQLのSET NAMES

PHPのmb_convert_encoding
のどちらでやるほうがいいのでしょうか?


746:nobodyさん
07/09/03 07:59:26 KucjbbQW
初の質問です。
今php+postgresql+fedoracore4でシステムを作っているんですが、
どうも原因がpostgresqlにあるとわかってきました。
自分はDBを作るときまず文字コードをeucに変えて入力するんですが
invalid byte sequence for encoding "EUC_JP": 0xe988
というエラーがでます。
PHPのソースはURLリンク(www.mywave.co.jp)
にあります。
ぜひ教えてください。


747:nobodyさん
07/09/03 13:19:55
>>746
いやです。
関係ないところを削って
30行以内に収めてから出直してください。

748:nobodyさん
07/09/04 02:28:15
>>746
マルチは死んでください

749:nobodyさん
07/09/09 02:29:17 zQ9Ko6j+
fedora core4でphp+postgresqlをやろうと思ったんですが
DBが認識してくれません。
DBの部分がエラーになるので、画面が真っ白です。
やった人いませんか?
DB認識はパッケージではだめなんでしょうか?
ちょっとわかりずらいかもしれませんが、よろしくです。


750:nobodyさん
07/09/09 09:10:26
apacheのエラーログにはなんて書いてありますか?

751:nobodyさん
07/09/09 11:02:45
氏ねバカ、と書いてある。

752:nobodyさん
07/09/10 06:56:33 iLiEDXXm
PHPのconfigure時にPostgresqlが組み込まれているかしりたいです。
fedora core4でパッケージでphpをイントールしたのですが。
組み込まれているのでしょうか?
またこれ追加はできないのでしょうか?
後php info();で見てみたんですが、
dbx support enabled
dbx version 1.1.0
supported databases MySQL ODBC PostgreSQL Microsoft SQL Server FrontBase Oracle 8 (oci8) Sybase-CT SQLite
てでたんだがphpのconfigureの部分はなかった。
どうでしょうか?


753:nobodyさん
07/09/10 14:55:10
PostgreSQL(libpq) Version とか出てないのか?

754:nobodyさん
07/09/10 20:00:15
DB板のPostgreSQLスレに湧いていた馬鹿が、こんどはこのスレにきたか。消えろ。

755:nobodyさん
08/03/27 13:58:14
ユーザIDをキーに持つテーブルを作ってですね

SELECT * FROM TABLE1 WHERE USER_ID = 'T&E SOFT';

まあ、IDはサンプルですが、このように'&'を含む文字列を条件に指定すると結果が一行も返ってきません。
IDに対してpg_escape_stringをかけても結果は同じでした。
CSEやpgAdminではこのクエリーは普通に期待する結果を返してくれるのですが…。

何か特殊なエスケープ処理を行わなくてはいけないんでしょうか?
PostgreSQLはversion7.4
PHPは4.3.3
Apacheha2.0.46
です。

756:nobodyさん
09/05/15 11:17:54 WsVpM47h
質問です。
データベースに先生用テーブルと生徒用のテーブルがあります。
カラム名をtloginIDとsloginIDとして、
新規登録でログインIDの重複をチェックしたいと思っています。
SQL文を教えてください。
テーブル名は、teacherとstudentです。


757:nobodyさん
09/05/15 11:23:15
確認するけど、ログインIDの重複をチェックしてどう処理するの?
許可するの?弾くの?

758:nobodyさん
09/05/15 11:30:37
select count(tloginID) from teacher
select count(sloginID) from student で2以上なら重複あり

759:758
09/05/15 11:33:25
間違った
select count(*) from teacher where tloginID='hoge'

だな

760:nobodyさん
09/09/24 09:08:59 DwG28PME
トランザクションして select for update ってやれば、
selectした行はロックがかかって他の人はその行は参照もロックされて待たせられるのでしょうか?


761:nobodyさん
10/01/21 14:04:11 2fYoTKfz
いつも勉強させてもらっています。質問です。

いくつかのプロセスが残ってしまう問題で行き詰まりました。このような

hogehoge 31926 25387 0 12:04 ? 00:00:00 postgres: nanashi nanashi2010 192.168.00.00(37729) idle

のが数プロセス溜まってしまいます。
select * from pg_stat_activityとしてみても、確かにidleなものが確認出来ます。

PHP 4.3.2 + PostgreSQL 8.1.9 です。
pconnect関数、pgpoolも使ってません。

もし同様の問題についてご存じの方がいらっしゃいましたら、
アドバイスいただけるとありがたいです。
よろしくお願いします。

762:nobodyさん
10/01/21 20:19:55
いや問題じゃないので

763:nobodyさん
10/01/21 20:37:51 2fYoTKfz
>>762
仕様だ、ということですか?

764:nobodyさん
10/01/21 21:46:20
当然接続は明示的にcloseしてるよな
Apacheがプロセス持ってるからとか言うオチだったらぶっ飛ばすからな

765:nobodyさん
10/01/22 17:15:36 6+I3LoB3
>>764
もちろんしています。
Apacheプロセスについては、残っている場合とそうでない場合があり混乱しています。
通常、Apacheのプロセスが落ちれば残るはずは無いと思うんですが。

766:nobodyさん
10/12/02 19:36:47 JyGm6z0o
■環境
centos5.3
postgresql 8.1

URLリンク(www.hizlab.net)
上記よりsqlファイルをダウンロードし
以下を実行したのですが、エラーがでるのですがわかる人いますか?
2002年位に作られたページみたいなのでpostgresのバージョン違いのためでしょうか?

[www@localhost ~]$ createlang plpgsql -d inet_db
[www@localhost ~]$ psql -f /home/www/meibo.sql -d inet_db
psql:/home/www/meibo.sql:16: ERROR: function m_update_editdata() does not exist
CREATE FUNCTION
psql:/home/www/meibo.sql:29: ERROR: table "inet_job" does not exist
psql:/home/www/meibo.sql:37: NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "inet_job_pkey" for table "inet_job"
CREATE TABLE
psql:/home/www/meibo.sql:41: WARNING: changing return type of function m_update_editdata from "opaque" to "trigger"
CREATE TRIGGER
psql:/home/www/meibo.sql:45: ERROR: sequence "seq_inet_profile_code" does not exist
CREATE SEQUENCE
psql:/home/www/meibo.sql:52: ERROR: table "inet_profile" does not exist

767:nobodyさん
10/12/03 09:15:27
存在しないってエラーが出て、その後作成しましたって出てるから作成されてるんじゃないの?
作成に失敗したってエラーが出てれば作成途中で終わってるだろうけど

768:nobodyさん
10/12/03 23:43:10
>>767
レスありがとうございます。
ソース(URLリンク(www.hizlab.net))
をよく見たところ以下のようにDROP ナニナニ している部分を
コメントアウトしたところエラーがでなくなりましたが
新たに作ったデータベースに
DROP ナニナニ する作者の意図はなんなのでしょうかね?

-- 修正日/修正者を更新するトリガプロシージャを作成
DROP FUNCTION m_update_editdata();
CREATE FUNCTION m_update_editdata() RETURNS OPAQUE AS '
省略
-- テーブルの作成
DROP TABLE inet_profile;
CREATE TABLE inet_profile (
省略
-- 職種マスタの作成
DROP TABLE inet_job;
CREATE TABLE inet_job (
省略
-- INET_PROFILE 用のシーケンスを作成
DROP SEQUENCE seq_inet_profile_code;
CREATE SEQUENCE seq_inet_profile_code
省略

769:767
10/12/04 00:37:08
それは初期化スクリプトの定番でしょ

コマンドラインから流し込んでDB初期化するときに、もし前のデータが残っていればそこで初期化が頓挫してしまう
先にDROPした上でCREATEすれば何度流し込んでも同じように初期化できる

770:nobodyさん
10/12/05 10:56:11
>>769
なるほど失礼しました。私が無知でした。
ありがとうございました。

771:電脳プリオン
12/01/02 22:52:37.95 BE:456084959-2BP(1960)

  ( ・∀・)      | | ガガッ
 と    )      | |
   Y /ノ      .人
    / ) .人   <  >_∧∩
  _/し' <  >_∧∩`Д´)/
 (_フ彡 V`Д´)/   / ←>>479
            / ←>>384

772:nobodyさん
13/08/17 NY:AN:NY.AN
.          \\      ,土ヽ l 十  ├  ゝ‐、ヽ ll               尸  //
            \\  (ノ ) | Cト、.Cト、   ノ l_ノ よ  ̄ ̄ ̄ (⌒/   //
                   .....       .:_ -― ─- 、:.    ......
                  ..::⌒>.、:: ...::/::.::/::.:: ヽ::.::.\::....::x<⌒::.
              ::x-=≦.::.-=`ミO.:/:/:/|:./.:ハ::ヽ::`O::-=ミて`く⌒ヽ::
            ::, イ::ノ⌒'Z _⌒ Y彡::./V  j/ヽ::ハ.::.V::Y⌒/;^)- 入 \:
           ::/ :/八  '(:::::':,\ トV::./⌒     ⌒ヽ.::∨/,.::'::/  /:::∧  '\::
           ::/ `V::/ヽ\ \ :':, 八Ⅳ __    __ jハ:::l, :':::::, ′ /:::/   ̄ ノ\::
        ::〈   ,.:'::/   ヽ \ \:l:ハ| 〃⌒    ⌒ヾ ハ:|::::/  ,.イ:::/     ∠.::勹::
       ::/ ! :.'::::∧   |  ヽ  \ム .:::::  r ┐ ::::.,'ノ/  / /::/   |__:/::
     ::∠._jハ_ん:ヘ/}ノ /ヘ  ヽゝ_  ヽ ノ   イ/  /⌒ん'⌒)_>::
                     ̄   ̄`ヽ   `=≧r ‐i彡''´  /::     ̄
                      ::\ヽ   ` ´   / /::
                       ::          ,′
                       ::i  :;     :;  i::
                       ::|          |::
                       ::l         |::
                         ::j            ::
                        ::,′           l::
                         ::/           |::
                     ::/              !::
                       ::/    〉┴r      ::
                       ::,′    /:: ::|     |::

773:nobodyさん
13/09/03 08:13:13.43
ぬるぽ

774:nobodyさん
13/12/30 19:24:59.46
まあまあこんな感じだよ

775:nobodyさん
14/01/02 21:57:26.13
今年のラッキーカラーは?

776:nobodyさん
14/01/03 18:08:08.71
来てるかも

777:nobodyさん
14/01/27 20:19:46.52
周辺は厳戒態勢

778:nobodyさん
14/01/27 22:05:39.86
世界一

779:nobodyさん
14/01/29 21:03:23.07
どうもどうも


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