2012-02-22 55 views
0

我想使用數據庫的電子郵件可以有多個條目,但我想防止重複條目。目前,我有:如何從我的表中選擇數據並將其設置爲字符串?

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

但ITEMNAME和注意事項需要成爲我的琴絃if語句工作

我插入功能是在我的代碼,但生病後它

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

我敢肯定,這是一個複製/粘貼的監督,但你可以在引號包裹條件值(itemName和注意事項)。 – 2012-02-22 00:46:42

+0

我試過了報價,可悲的是沒有幫助... – inVINCEable 2012-02-22 00:51:06

+1

那麼,至少現在你的腳本將編譯時不會引發任何警告。你有一個表,其中有多行使用相同的電子郵件地址,每行可以有一個itemName和Notes,但是itemName和Notes都不能在其他行上重複嗎? – 2012-02-22 00:53:53

回答

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

什麼低統計email ='$ email'的條目數量?

+0

即時通訊不限制電子郵件的條目,所以我不認爲這會工作 – inVINCEable 2012-02-22 00:50:22

0

基於關我們在意見有交談,這聽起來像你最好的選擇是通過增加在所有三列(電子郵件,ITEMNAME,筆記)的唯一contraint在數據庫層來處理這個功能。使用此解決方案,數據庫不會允許所有三列具有相同值的多行。

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 

唯一的缺點是,寫入數據庫將會更加昂貴,因爲所有的三列(尤其是票據)將不得不考慮的唯一約束。

你的另一個選擇是負載匹配的電子郵件地址的所有行,然後通過各行尋找對抗ITEMNAME和筆記的比賽,這將是更加痛苦的一步。

+0

這是否有幫助? – 2012-02-23 00:06:50

相關問題