2012-01-14 24 views
0

データベースの変数の配列1にあるmysqlに格納する前に、どのようにチェックすればよいですか? $explode[$i]が存在する場合は、次へ進みます。存在しない場合は、以下のコードを実行してください!ここでデータが既に存在するかどうかをチェック

は、PHPで私のコードです:

$request_user_ids = $_GET['req']; 
    $explode = explode(',',$request_user_ids); 
    for ($i=0; $i<count($explode);$i++){ 

    $result = mysql_query(" 
      INSERT INTO fbinvite (memberid, fbsender, fbempfang, regdatum, fbreturn) 
      VALUES(NULL, '".$userid."', '".$explode[$i]."', NOW(), '0')"); 

は、どのように私は二重の挿入がないことを行うことができます。

+2

これにはmysqlコマンドがあります。あなたが望むのはIGNOREなので、すでに存在する場合は無視します。 UpsertまたはMergeを使用する場合は、ON DUPLICATEを使用します。 – Matt

+0

ありがとう、ほとんどのものは見やすいです。私はこのことを "先着順"の原因としましたが、fbempfangを "ユニーク"に設定するのを忘れました –

+2

入力データを墨塗りすることを忘れないでください – pxl

答えて

2

まず、関連する属性セットを主キーまたは表の一意索引にします。

その後、あなたはいくつかのオプションがあります:

  • あなたは、単にエントリが存在する場合、重複データOR
  • チェックを無視したい場合は盲目的に、INSERT IGNORE INTO fbinvite ...を使用します。SELECT memberid FROM fbinvite WHERE some_attr1 = $explode[...] AND some_attr2 = $explode[...]を。エントリが存在しない場合は、
    • をテーブルにそれを挿入します:かつ適切に継続INSERT INTO fbinvite ...
    • エントリが存在する場合:ユーザーへ
      • ショーメッセージまたは
      • 更新既存のエントリ:UPDATE fbinvide ... WHERE ...
    • 一度にINSERTまたはUPDATE:INSERT ... ON DUPLICATE KEY UPDATE ...
+0

最初の部分が良い方法です。 30変数。 Thengoは単純な 'IF($ result){}'で始まります –

関連する問題