【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集

データベースの主キーの時刻と同じ時刻のデータを
持っていた場合には、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へ書き込みできませんでした');
}

A 回答 (2件)

細かく見てないのでなんともいえませんが、


ある場合は更新で、ない場合は追加という仕様でしたら
REPLACEがよろしいのでは?

参考URL:http://dev.mysql.com/doc/refman/4.1/ja/replace.h …
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/03/20 12:56

こんばんは。



ちょっと気になったのですが、ご質問に示して頂いたコード中

$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が かかってしまう

のではないかな?と思いました。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!