2017-02-16 16 views
0

PHP curlを使用して別のWebサイトからデータを取得するには、以下のコードを使用してくださいfunction.everythingは問題なく動作していますが、リフレッシュ
duplicate data screenshotデータが存在する場合は再度データを挿入しないでください

データが既にMysqlデータベースに存在する場合、リロード時に重複データの挿入を停止する理由は何ですか?私はこの問題についてGoogleで検索しますが、有用な情報は得られません。

if(isset($_POST['url'],$_POST['theme'])){ 

    $db = new Mysqli("localhost" , "iamniloy_wp###" , "(5uSE6[3OP" , "iamniloy_#@"); 

    $url = $db->real_escape_string($_POST['url']); 
    $theme = $db->real_escape_string($_POST['theme']); 


    $query = "INSERT INTO twist_data (url,theme) VALUES ('$url','$theme')"; 
    $db->query($query); 

    } 
+0

あなたがしようキャッチを使用して、ちょうど重複ID例外を無視することができます、あなたはユニークなフィールドを持って提供します。 – ArtisticPhoenix

+0

データはどのように複製されますか? URL、テーマ、またはその両方? –

+1

UNIQUEインデックスを作成してください。あなたのデータベースを変更するには遅すぎることはありません –

答えて

0

関連する列に一意のインデックスを持つようにテーブルの構造を変更する必要があります。例えば

:あなたがあなたのテーブルに同じurlを挿入することはできないでしょう

ALTER TABLE `twist_data` ADD UNIQUE INDEX `url` (`url`) 

この方法です。

あなたはuniqueは両方url、あなたが使用することができますthemeにする必要がある場合:MySQL Documentation

ALTER TABLE `twist_data` ADD UNIQUE INDEX `url_theme` (`url`, `theme`) 

詳しい情報。

+0

あなたは 'INSERT IGNORE'構文について言及することもできます。 –

0

データが存在するかどうかを確認するSelectカウントクエリを作成し、 if条件を作成します。 trueの場合は挿入しないでください。データがない場合は(false)、クエリを挿入します。

例:

Select count(*) from twist_data where url='".$url."'; 
1

あなたが何らかの理由で一意のインデックスを追加することができない場合は、すでに既存のレコードを確認するためにEXISTSを使用することができます。

INSERT INTO twist_data (url, theme) 
SELECT * FROM (SELECT '$url','$theme') AS tmp 
WHERE NOT EXISTS (
    SELECT * FROM twist_data WHERE url = '$url' AND theme = '$theme' 
) 
+0

'LIMIT 1'? :-) –

+0

@PaulSpiegel誰がそれを置く!? –

+0

私はSOでいくつかのゴブリンについて聞いた;-) –

0

使用ON DUPLICATEキーワードあなたの挿入クエリで。参照:INSERT ... ON DUPLICATE KEY (do nothing)

そして、列のインデックスを一意に設定します。

+1

ユニークなインデックスを持っている場合、 'on duplicate'は** **関連します。 – Dekel

+0

が編集されました。ありがとう。 :) – Juned

+0

私の回答を7分前からチェックしましたか? :)(投票がありがとうございます) – Dekel

0

は、このコードで、最後の2 LIGNEを置き換えます $query = "select * from twist_data where url='$url'"; $db->query($query); if($db->num_rows>0){ $query = "INSERT INTO twist_data (url,theme) VALUES ('$url','$theme')"; $db->query($query); }

+0

私はこれを前に試しましたが、それは私にとってはうまくいかない:( –

関連する問題