- 締切済み
php updateできないのです
PHP初心者です。phpMyAdminでは、実行できたのですが、 PHP文上ではできません。 *************************************************************** $sql = ""; $sql = $sql."update RKTN_WK_TBL set \n"; $sql = $sql."DATA1 = (select count(*) from RKTN_WK_TBL as sub \n"; $sql = $sql." where sub.BKN_CD = RKTN_WK_TBL .BKN_CD) \n"; $affected_rows = $ms->exec( $sql ); $ms->exec("COMMIT"); *********************************************************** ↑うまく更新している。 ↓ここから更新できない *********************************************************** $sql = ""; $sql = $sql."UPDATE RKTN_WK_TBL as rk \n"; $sql = $sql."INNER JOIN (SELECT * FROM GST_KHN_INF_TBL) as gst ON rk.KYKU_NO = gst.KYKU_NO \n"; $sql = $sql." SET rk.GST_ID = gst.GST_ID \n"; $affected_rows = $ms->exec( $sql ); $ms->exec("COMMIT"); ************************************************************ どこがダメなのでしょうか? 先週からハマって困っております。 echo $affected_rowsを見ても 0件のようで表示されません。 だた、phpMyAdminで実行した時に「フォームに入力されていない値があります。」とMSGが表示され その後、更新されています。これが問題なのでしょうか? どなたかご教授いただければ助かります。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- thezen5
- ベストアンサー率84% (27/32)
INNER JOIN にしている理由はなんでしょうか? サブクエリーのSELECTで済みそうな気がしますが UPDATE `RKTN_WK_TBL` SET `RKTN_WK_TBL`.`GST_ID`=(SELECT `GST_KHN_INF_TBL`.`GST_ID` FROM `GST_KHN_INF_TBL` WHERE `GST_KHN_INF_TBL`.`KYKU_NO`=`RKTN_WK_TBL`.`KYKU_NO`);
- thezen5
- ベストアンサー率84% (27/32)
UPDATE SET フィールド1=何か FROM テーブル1 INNER JOIN テーブル2 でどうですか? $sql = ""; $sql = $sql."UPDATE SET rk.GST_ID = gst.GST_ID \n"; $sql = $sql."FROM RKTN_WK_TBL as rk INNER JOIN GST_KHN_INF_TBL as gst ON rk.KYKU_NO = gst.KYKU_NO \n"; $affected_rows = $ms->exec( $sql ); ※(SELECT * FROM GST_KHN_INF_TBL)は全取得だから単にGST_KHN_INF_TBLでいいんじゃないですかね?
- thezen5
- ベストアンサー率84% (27/32)
UPDATE RKTN_WK_TBL as rk としてるのはなぜでしょうか? RKTN_WK_TBL自体を更新したくないのですか?
お礼
ご回答してくださりありがとうございます。 また、返信が遅くなり申し訳ございませんでした。 UPDATE RKTN_WK_TBL as rkとしているのは、特に意味はありません。 テーブル名が長いので短縮できるからというだけです。 UPDATE文を短縮名にすることは駄目なのですか? UPDATE RKTN_WK_TBL自体に更新したいです。 短縮名を削除して実行しても更新されませんでした。(泣)
お礼
ご回答ありがとございます。 教えていただいた通り実行したのですが、残念ながら更新されませんでした。 他の方法を考えようかと思案中です。 ありがとうございました。