PostgreSQLについて質問です。


以下のようなデータベースに対し

CREATE TABLE ad_code (
ad_code_id serial NOT NULL,
ad_code_name text,
note text,
created int4 NOT NULL,
created_date timestamp NOT NULL DEFAULT now()
);

List of relations
Schema | Name | Type | Owner
--------+---------------------------------+----------+----------
public | ad_code | table | postgres
public | ad_code_ad_code_id_seq | sequence | postgres


PHPで以下のような処理をしても

$query = "INSERT INTO ad_code ( ad_code_id, ad_code_name, note, created, created_date )
VALUES ( nextval('ad_code_ad_code_id_seq'), 'テスト', 'テストです', 1204724668, '2008/03/05 22:44:28' );";
pg_exec( $db_link, $query );
$result = pg_get_result( $db_link );

$query = "select currval('ad_code_ad_code_id_seq');";
$result = pg_get_result( $db_link );
$row = @pg_fetch_row($result);
if($result) pg_free_result($result);
var_dump($row);


レコードは作製されず、ダンプした値もNULLが返ってきます。
エラーは表示されません。

レコードを追加し、追加したレコードのIDを取得したいのですが、うまくいきません。

MySQLは慣れているのですが、PostgreSQLでの開発は初めてで戸惑っています。

PHP Version 4.3.10
PostgreSQL(libpq) Version 7.2.1

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2008/03/06 00:31:08
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:b-wind No.1

回答回数3344ベストアンサー獲得回数440

ポイント60pt

PHP: pg_query - Manual

とりあえず、

レコードは作製されず

という時点でクエリにエラーが出てるんじゃあるまいか。


$result = pg_query($db_link, $query);
if (!$result) {
  die pg_last_error($db_link);
}

でエラーが起こっていないか判定してみるべし。

あと、

$result = pg_get_result( $db_link );

はこの場合要らないな。

id:shotets

できました!

ありがとうございます!

pg_exec() を pg_query() に変更したら

問題なくレコード追加できました。

2008/03/06 00:30:37

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません