2017-02-22 10 views
0

に基づいて重複を防ぐため、私はテーブルを持っている:PHP MYSQLは、例えば特定の列

ID FName LName Street  Number Phone Note 
1 John Smith 6th Ave 17  6465165 some random text 
2 Peter Murphy Barker Ave 22  6545213 some random text 
3 Michael Adams Centre St 34  5451351 some random text 

は、どのように私は第六アベニュー17に住んで重複したエントリジョン・スミスを防ぐが、Devoeに住んでいるいくつかのジョン・スミスを許可することができます例えばAve?

私はこれ以上の列を持っていますが、私はします。FName、LNAME、ストリートと数に基づいて重複を防止したい...

+0

collumsに一意のインデックスを付けます。 – Jer

答えて

1

ます。FName、LNAME、ストリートと数に一意のインデックスを作成します...

<?php 
$dbhost = "localhost"; 
$dbname = "pdo"; 
$dbusername = "root"; 
$dbpassword = "your password"; 

$link = new PDO("mysql:host=$dbhost;dbname=$dbname","$dbusername","$dbpassword"); 

$statement = $link->prepare("INSERT INTO testtable(fname, lname, street, number) 
     VALUES(:fname, :lname, :street, :number)"); 

try { 
    $statement->execute(
     array(
      'fname' => 'John', 
      'lname' => 'Smith', 
      'street' => '6th Ave', 
      'number' => '17', 
     ) 
    ); 
} catch (PDOException $e) { 
    if ($e->errorInfo[1] == 1062) { 
     // duplicate entry 
    } else { 
     //other error 
    } 
} 
+0

私のコードで例外をキャッチするには?たとえば、 "User exist!"というメッセージを表示するには? – shone83

+0

私はそれをしました、ありがとう! – shone83

+0

うれしい –

0
:これは、私はPDOの例を含めるように私の答えを更新しました ..あなたは、あなたのコード内で例外をキャッチし、この問題が発生したときに何かを行うことができ、重複を挿入していたINSERT文は失敗になります

最初のステップは、次のようにテーブルに一意のキーを設定することです:

ALTER TABLE table ADD UNIQUE KEY (FName,LName, Street, Number) 

INSERT IGNOREを使用してデータを追加します。これら2つの列の重複したエントリにつながるINSERTSは、通過するのではなくMySQLエラーを返すようになりました。

注:INSERTUNIQUEを使用した後は、声明を静かに無視します。