[PHP-users 4590] Re: ラージオブジェクト登録
AKUNE Yutaka
php-users@php.gr.jp
Tue, 08 Jan 2002 17:04:32 +0900
阿久根です。今年もよろしくお願いします。
On Tue, 08 Jan 2002 16:32:53 +0900
GUU <guu_ml@reguler-c.com> wrote:
> -----------------------------------------------------
> pg_exec ($con, "begin");
> $result=pg_exec($con,$sql);
>
> if($ary[kiji_gazou]!="none"){
> $fn=fncCopyFile($ary[kiji_gazou]);
> pg_loimport($fn);
>
> }
>
> pg_exec ($con, "commit");
> -----------------------------------------------------
> $sqlは、既に単独でインサート成功しているSQL文が入っています
---[ 略 ]---
> このコード実行に関してはエラーは発生しなかったのですが、ODBC接続でACCESS
> からカラムを見ても、何も入っていませんでした。psqlでも同様でした。
> データが登録されたことを確認する手段が、間違っているのでしょうか?
> そもそもフィールドをどうやって指定するのでしょうか?(まったくやり方が違っ
> ている気もしますが・・・^^;;)
この $sql が何をしているのか、みているのはどのカラムかも分かりませんが・
・・
ラージオブジェクトを格納しても、その格納したオブジェクトの ID を取得して
おかないと意味がありません。pg_loimport() の戻り値がその ID になります。
ラージオブジェクトが実際に格納されるのは、システムカタログの
pg_largeobject テーブルです。このテーブルの loid フィールドの値がオブジェ
クトのIDとなります。ちゃんとデータが登録されたかどうかは、この loid とイ
ンポート時の戻り値のIDを照合することで可能です。
ただ、この pg_largeobject にはファイル名を保存しておけないので、私の場合
は別個にラージオブジェクトの管理テーブルのようなものを作っておき、そこに
pg_loimport() の戻り値(オブジェクトID)と対にしてファイル名を登録してます。
※PHP-4.0.6でラージオブジェクトを触っているとよく落ちるようです。
------8<------
yutaka akune
csakune@ipc.pioneer.co.jp