2011-06-28 3 views
0

ユーザがtag1、tag2、tag3のようなタグを入力できるフォームがあります。私はその情報を爆発させ、それらをテーブルに挿入します:一つずつタグ。テーブルの各タグには、一意のID(参照用)、vid_id(動画との一致用)、および名前(例:tag1)があります。現在の入力にないテーブルエントリを削除する

誰かがテーブルにこれらの3つのタグを持っていて、同じvid_idのtag1、tag2でフォームを再提出すると、そのtag3がテーブルから削除されます。私はこれを最も効率的に行う方法を考えていましたが、各繰り返しでselect文を実行するか、そのvid_idのすべてのタグを削除してtag1、tag2を再挿入することを考えていましたが、それは非効率的です。誰もが良いアイデアを持っていますか?

$variable=explode(',',$_POST['tags']); 
foreach($variable as $tag) { 
    $id=md5(uniqid()); 
    if ($tag!=''){ 
     $sql="INSERT into tags (id,vid_id,name) VALUES (?,?,?)"; 
     $stmt16 = $conn->prepare($sql); 
     $result=$stmt16->execute(array($id,$vid_id,$tag)); 
    } 
} 
+0

には、各動画のタグは、1人のユーザーのみ誰が入力することはできますか? idおよび/またはvid_idに外部キー関係がありますか?以前に送信したタグを見ることができるようにしたいのですか、またはすべての動画に現在のタグセットが1つだけ必要ですか? –

+0

また、id変数をどのように取得していますか?自動増分値ではないようですね。 –

+0

今のところ、タグは1人でしか入力できません。外部キーはありません。私はidを使用したので、タグを個別に参照することができます。私は、すべての動画に現在のタグを1つだけ必要としています。 idは基本的にちょうどミックスアップされたタイムスタンプであるので、それは一意ですmd5(uniqid())を使用して上記のように達成されます。 – Scarface

答えて

1

私はこの質問を完全に理解していません。あなたを助けるかもしれないピース:WHERE NOT SQL構文で:

DELETE FROM tags  
WHERE tags.name NOT IN ('tag1', 'tag2', 'tag3') 

とREPLACE文:http://dev.mysql.com/doc/refman/5.0/en/replace.html

関連する問題