2012-02-22 22 views
0

私は電子メールが複数のエントリを持つことができるデータベースを使用しようとしていますが、重複するエントリを防止したいと思います。テーブルからデータを選択して文字列にするにはどうすればよいですか?

<?php 
    "SELECT Notes, itemName from UserItems where email = '$email'"; 
    if("itemName" == $name && "Notes" == $desc) { 
     echo "duplicate"; 
    } 
    ?> 

しかし

私の挿入機能を動作させる文が何について

$insert = ("insert into UserItems (itemName, ItemNumber, email, Price, Notes) Value (\"$name\", \"$ItemNumber\", \"$email\", \"$price\", \"$desc\")"); 
+1

私はそれがコピー/ペーストの監視であると確信していますが、条件付きの値を引用符で囲むことができます(itemNameとNotes)。 –

+0

私は、悲しいことに助けを借りて引用符を試してみました... – inVINCEable

+1

少なくとも今はあなたのスクリプトは警告をスローせずにコンパイルされます。同じ電子メールアドレスを持つ複数の行があり、各行にitemNameとNotesを持つことができるテーブルがありますが、itemNameもNotesも他の行に対して繰り返すことはできません。 –

答えて

2

ここに何か不足していますか?

<?php 
// add actual db connection info here 
$email = '[email protected]'; 
$name = 'John'; 
$desc = 'Some Description'; 
$row = mysql_fetch_array(mysql_query("SELECT Notes, itemName from UserItems where email = '$email'")); 
if($row['itemName'] == $name && $row['Notes'] == $desc) { 
    echo "duplicate"; 
} 
?> 

あなたが実際にクエリを実行していないか、結果をフェッチん - 私は、これはあまりにも明白だろうと私のポストは時間を無駄だろうと思った原因を答えるオフに開催されました。または、比較する変数を定義します。彼らは$ _POST、$ _GET、最後の行か何かの結果ですか?

0

それ私のコードでは低いが、病気のポストであればitemNameにとの注意が私のための文字列になる必要があります。現在、私は持っていますemail = '$ email'のエントリ数を数えますか?

+0

イムは、電子メールのエントリを制限しないでその正確なテキストで使用されていたので、無効になりますので、私はそれが – inVINCEable

0

コメントにあった会話に基づいて、3つの列(email、itemName、notes)すべてにユニークな制約を追加することで、データベースレイヤーでこの機能を処理するのが最善の方法です。このソリューションでは、データベースは3つの列すべてに対して同じ値を持つ複数の行を許可しません。

mysqlコマンドは次のようになります。

alter table <your_table> add unique (`email`, `itemName`, `notes`); 

// Will be inserted/updated no problem 
[email protected], itemName1, notes1 
[email protected], itemName1, notes2 
[email protected], itemName2, notes1 

// An error will be returned because this row already exists 
[email protected], itemName1, notes2 

唯一の欠点は、それがデータベースへの書き込みで、すべての3つの列(特にノート)などのより高価なは一意の制約のために考慮しなければならないでしょう。

あなたの他のオプションは、さらに多くの痛みを伴うことになるitemNameにとノートに対する一致、探し各行をステップ実行、その後、電子メールアドレスに一致するすべての行をロードすることです。

+0

がすべてでこのヘルプを行った作業とは思いませんか? –

関連する問題