0

私はMySQL言語が初めてです。関係データの挿入に問題があります。ユーザーの友情を保存するためのテーブルがあります。user1(id =1) と user2(id =2) が友達だとしましょう。次に、次のように友人テーブルに情報を保存します。

フレンドテーブル

user_id1 | user_id2
  1           2

ただし、php ファイルの一部の操作で、これら 2 人のユーザーの関係が再度チェックされ、友情情報が挿入/更新される場合があります。

1) user_id1 でユーザーをチェックし、フレンドシップ情報を更新します (insert ON DUPLICATE KEY を使用)。

INSERT INTO friend (user_id1, user_id2) VALUES ('1', '2') 
ON DUPLICATE KEY UPDATE user_id2=user_id2

何も変更されていないため、フレンド テーブルは正しいままです。

フレンドテーブル

user_id1 | user_id2
  1           2

しかし、最初に user2 からチェックを開始すると、友情情報が再度挿入されます。

フレンドテーブル

user_id1 | user_id2
  1      |    2
  2      |    1

この状況が発生するのを防ぐ SQL ステートメントはありますか?

答えてくれてありがとう、私の英語が下手でごめんなさい

4

1 に答える 1

2

SQL の場合、これは単なる新しいデータです。この場合、1,2 は実際には 2,1 と同じです。このための SQL 関数があるかどうかはわかりません。ただし、値を SQL に送信する前に、php で値を確認するのが適切な場合があります。

PHPコードがわからない場合は、次のようなものを試すことができます

$data = array('user_id1' => 2, 'user_id2' = 1);
arsort($data); //now the lowest id is always first

$user_id1 = current($data);
$user_id2 = next($data);

//send to SQL

これがあなたを正しい方向に導くことを願っています

于 2013-07-16T09:07:10.673 に答える