[pgsql-jp: 25007] Re: UPDATEが

佐藤 正樹 sato.m48081 @ mni.ne.jp
2002年 2月 28日 (木) 12:11:45 JST


多田@KSI様、岩波@PSL様、吉田様、三淵様様ありがとうございます。

アドバイスいただいた内容で修正しました。
実は私もSELECTとUPDATEで別の変数を使ってみましたが、
それでもダメだってとゆう経緯がありました。
添付?(貼り付けた)ソースに修正しましたらOKでした????
本番?のソースで再修正しましたらNG?????(〓〓の$resから$res1に変更)
そこで、他の個所を見直しました。
エラー処理のための〓で処理が止まるため1件しか処理していないようです。
しかし、正常に更新していますし、〓のメッセージも何も表示されません。
やはり、書き方が悪いのでしょうか?

〓  $res1 = $conn-> exec("UPDATE reserv_t SET r_mail_f = 'yes' WHERE
r_m_id=$item[0] and r_d_id=$item[1] and r_p_id=$item[2] and r_new_f = 'yes'
");
〓  if ( $res1 -> resultStatus ne PGRES_TUPLES_OK ) {
〓   print "db update err\n";
〓   printf($conn->errorMessage);
〓   exit 1;
〓  }





> はじめまして、佐藤と申します。
> postgresqlとゆうよりsqlの初心者です。
> perl+postgresqlで以下のソースを作成しました。
> しかし、$row = ($res -> ntuples)で2件あることを確認しましたが、
> 1件処理したところで、終了してしまいます。
> selectの書き方が悪いのかupdateの書き方が悪いのか分かりませんが・・・・。
> どなたかアドバイスいただけないでしょうか。
>
> #!/usr/bin/perl
> use Pg;
> require "/............cgi";
> $conn = Pg::connectdb($DBNM);
> $res = $conn-> exec("SELECT r_m_id,r_d_id,r_p_id FROM reserv_t WHERE
> r_mail_f = 'no'");
> while (@item = $res->fetchrow) {
>    $res = $conn-> exec("UPDATE reserv_t SET r_mail_f = 'yes' WHERE
> r_m_id=$item[0] and r_d_id=$item[1]  and r_p_id=$item[2] and r_new_f =
'yes'
> ");
> }
> 尚、ソースを見やすくするため、エラー処理やその他の処理は外しました。
>
>




pgsql-jp メーリングリストの案内