2012-04-21 7 views
-3
$con = mysql_connect("localhost","--------","------") 
or die ("Could not connect to mysql because ".mysql_error()); 
mysql_select_db("-----------"); 

$insert = mysql_query("INSERT INTO count (user, day, hour) VALUES ('".$user."', ".$day.", ".$hour.") ON DUPLICATE KEY UPDATE day=".$day.", hour=".$hour."") 
or die("Error Code:".mysql_error()); 
mysql_close($con); 

これはたびに新しい行を作成するだけです。私は、ユーザーが行に一致する場合は、そのデータで行を作成しない場合は、曜日と時間の値を更新しようとしています。また、私はこれが古くて面倒なPHPでSQLに問い合わせる方法だと確信しています。 MySQL Reference about ON DUPLICATE KEY UPDATEからMY SQLヘルプ

+0

目的は何ですか? – aqua

+0

あなたはどの問題がありますか?あなたは何をしたいですか? –

+0

キー 'user'カラムはありますか? –

答えて

2
CREATE UNIQUE INDEX ix_count_user ON `count` (`user`(15)) 
+0

#1170 - BLOB/TEXTカラム 'key user'はキーの長さなしでキー指定に使用されます – bjm904

+0

@ bjm904:ユーザ名の長さにはどのような制限がありますか? – Quassnoi

+0

15文字が正しく動作します – bjm904

0

引用:

あなたがON DUPLICATE KEY UPDATEを指定し、行がUNIQUEインデックスまたはPRIMARY KEY内の重複値を引き起こすことに挿入されている場合は、MySQLは古い行のUPDATEを実行します。

- > MySQLの2つの列のみdayhourは、主キーまたは一意のインデックスであるUPDATE代わりのINSERT場合はありません。
そうでない場合は、新しい行を挿入するだけです。

dayhourをプライマリキーにするか、これらの2つの列を含む一意のインデックスを作成してこれを機能させる必要があります。

+0

これはどうしたらいいですか? – bjm904

+0

曜日と時間は一意のインデックスを作成しますか? – bjm904

+0

@ bjm904:はい、両方の列を含む一意のインデックス(* ONE *)か、 'day'と' hour'を主キーにします。両方の方法が可能でない場合、 'ON DUPLICATE KEY UPDATE'を使うことはできません。 –