• ベストアンサー

検索項目のデータの比較確認方法が分かりません。

データベースの主キーの時刻と同じ時刻のデータを 持っていた場合には、UPDATEで修正する。主キーと 同じ時刻とは異なったデータを持っている場合には、 INSERTでDBに書き込みをしたいのですが、うまく動 作させることができない状況です。 $DSQ[0][0] = "2007-01-31 11:00:00"; $DSQ[0][1] = 2.5; $DSQ[0][2] = 3.7; $DSQ[0][3] = -0.8; $DDSQ[0][0] = "INSERT INTO data VALUES('".$DSQ[0][0]. "',".$DSQ[0][0]. ",".$DSQ[0][1]. ",".$DSQ[0][2]. ")"; $DDSQ[1][0] = "UPDATE data SET record_time = ".$DSQ[0][0].", data01 = ,".$DSQ[0][0].", data02 = ,".$DSQ[0][1].", data03 = ,".$DSQ[0][2]. ")"; $MySQL['conn'] = @mysql_connect($MySQL['HOST'],$MySQL['USER'],$MySQL['PASSWORD']) or exit('MySQLへ接続できませんでした'); mysql_select_db($MySQL['DATABASE'], $MySQL['conn']); $MySQL['query'] = "SELECT * FROM data WHERE record_time = '$DSQ[0][0]'"; $MySQL['result'] = mysql_query( $MySQL['query'],$MySQL['conn'] ); while($tableD = mysql_fetch_array($MySQL['result'],MYSQL_NUM)) { print_r("data_view = ".$tableD); print("\n"); } if( $DSQ[0][0] != $tableD[0]){ $MySQL['result2'] = mysql_query( $DDSQ[0][0],$MySQL['conn'] ) or exit($i.'番目のデータがMySQLへ書き込みできませんでした'); }else{ $MySQL['result2'] = mysql_query( $DDSQ[1][0],$MySQL['conn'] ) or exit($i.'番目のデータがMySQLへ書き込みできませんでした'); }

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

細かく見てないのでなんともいえませんが、 ある場合は更新で、ない場合は追加という仕様でしたら REPLACEがよろしいのでは?

参考URL:
http://dev.mysql.com/doc/refman/4.1/ja/replace.html
trigene
質問者

お礼

ありがとうございます。参考にさせて頂きます。

その他の回答 (1)

  • hkd9001
  • ベストアンサー率48% (99/204)
回答No.2

こんばんは。 ちょっと気になったのですが、ご質問に示して頂いたコード中 $DDSQ[1][0] = "UPDATE data SET record_time = ".$DSQ[0][0].", data01 = ,".$DSQ[0][0].", data02 = ,".$DSQ[0][1].", data03 = ,".$DSQ[0][2]. ")"; の部分が (1) SQL 文中のカッコが釣り合っていない(右カッコしかない)ので、エラーと解釈され、何事も行われない (2)上記を修正してエラーが無くなっても「where句」がないので、全レコードに対してUPDATEが かかってしまう のではないかな?と思いました。

関連するQ&A

専門家に質問してみよう