since 2002/01/01
lastupdate 2003/01/16
   

レコードの更新

基本は、レコードの取得の所で大体終りみたいな物ですけど、一応レコードの更新についても(^^
ま、こちらも SQL 文さえ出来ればほとんど同じ手順みたいなものです。


レコードの更新

さて、レコードの更新も pg_exec() を使います。ま、クエリを発行するということでは同じことですので。
構文はすでに説明しているので、サンプルを。

----------------------------------------------------------------------------------------------------
  $con    = pg_connect("dbname=TEST"); // データベースに接続
  $SQL    = "UPDATE zaiko SET zaiko = 120 WHERE hinmei = 'red' ;" ;
  pg_exec($con, $SQL); // クエリを発行
----------------------------------------------------------------------------------------------------

これで、hinme が red のデータの zaiko が 120 になるはずです。
ただ、この例だとエラーになった場合はともかく、 本当に更新が行われたかどうかはわからない ( WHERE条件式に一つもマッチしない場合もある ) ので、 実行結果の確認のために、 pg_cmdtuples() を使います。

構文: 影響のあったレコード数 = pg_cmdtuples ( 結果セット );

これにより、更新処理が行われたレコード数がわかるので、 たとえば先ほどの hinmei = 'red' というデータが1つしかないとすれば、この値には 1 が返ることになり、 これを踏まえたサンプルはこのようになります。

----------------------------------------------------------------------------------------------------
  $con    = pg_connect( "dbname=TEST" ); // データベースに接続
  $SQL    = "UPDATE zaiko SET zaiko = 120 WHERE hinmei = 'red' ;" ;
  $result = pg_exec( $con, $SQL ); // クエリを発行
  $row    = pg_cmdtuples( $result );

  echo "$row 件のレコードが更新されました。";
----------------------------------------------------------------------------------------------------

レコードの更新については、ちょっと手抜きな感じですが、INSERT や DELETE に関しても同じ手順で行えますので、 心配はないと思います。結局はSQL文を pg_exec() で発行するだけですので(^^;;;