以下のようなデータベースに対し
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
とりあえず、
レコードは作製されず
という時点でクエリにエラーが出てるんじゃあるまいか。
$result = pg_query($db_link, $query); if (!$result) { die pg_last_error($db_link); }
でエラーが起こっていないか判定してみるべし。
あと、
$result = pg_get_result( $db_link );
はこの場合要らないな。
できました!
ありがとうございます!
pg_exec() を pg_query() に変更したら
問題なくレコード追加できました。