1

だからこれが犯人です

mysql_query("UPDATE coordrating SET submissions = '2' WHERE rating = 2");

これで、インデックス(テーブルのインデックス)の値を使用しようとしない限り、これは正常に機能します。したがって、これは機能しません。

mysql_query("UPDATE coordrating SET index = '2' WHERE rating = 2");

また

mysql_query("UPDATE coordrating SET submissions = '2' WHERE index = 2");

これは私のデータベース構造のスクリーンショットです

http://imageshack.us/photo/my-images/694/problemmysql.png/

私は完全に困惑しています。

4

3 に答える 3

1

この方法を試してください:

UPDATE `coordrating` SET `index` = '2' WHERE `rating` = 2

テーブル名またはフィールド名がMySQL演算子と一致する場合があるため、バッククォートはテーブル名またはフィールド名を区切るために使用されます。

于 2012-07-01T18:00:32.280 に答える
1

index予約語であるため、これらのクエリは機能しません。バッククォートを使用してその名前を引用し、予約語ではなく名前として扱う必要があることをMySQLに伝えることができます。

mysql_query("UPDATE coordrating SET `index` = '2' WHERE rating = 2");

mysql_query("UPDATE coordrating SET submissions = '2' WHERE `index` = 2");
于 2012-07-01T18:01:49.410 に答える
0

スクリーンショットで表示できるように、 「インデックス」列(1つのベストプラクティスは、主キーとして使用される列の名前としてidを使用することです)は、pimaryキーです。主キーのコストレインの1つは一意であるため、「rating = 2」の2つの行があり、一意の制約のためにクエリが失敗する可能性があります。

もう1つのベストプラクティスは、主キーの値を変更しないようにし、別の列を使用することです。

于 2012-07-01T18:20:47.420 に答える