2017-12-03 126 views
0

我試圖從文本框中插入多個記錄到mysql表中。 如果我輸入2個以上的記錄,它將插入重複項。 這是代碼。 我在做什麼錯?防止重複行插入php/mysql

一些更多的信息

表信息

id (int) primary auto_increment 
email (varchar) 
imei (varchar) 
date_ordered (datetime) 
status(varchar) 

由於這僅僅是個開始,我有改變的表結構沒有問題。

$email = $_SESSION['email']; 
$now = time(): 
$status = "1"; 

$imeis = $_POST['imeis']; 
$row = explode("\n", $imeis); 

foreach ($row as $key => $imei) 
{ 
    $imei = mysql_real_escape_string($imei); 

    $query = "SELECT * FROM orders WHERE imei = '$imei'"; 
    $result = mysqli_query($link, $query); 

    if (mysqli_num_rows($result) == 0) 
    { 
     $query1 = "INSERT IGNORE INTO orders (email, imei, date_ordered, status) VALUES ('$email', '$imei', '$now', '$status')"; 
     $result1 = mysqli_query($link, $query1) OR die("fml"); 

     if ($result1) 
     { 
      echo "Added $imei<br>"; 
     } 
    } 

    else 
    { 
     echo "<B>$imei</B> already there<br>"; 
    } 

} 
+0

這部分可能會很棘手'或死(「fml」)' –

+0

@BarbarosÖzhan這不是真的有幫助。 @OP第一個問題可能是'INSERT IGNORE'。這就像說:我不在乎是否有重複,只是忽略它並繼續。其次,'OR死亡(「fml」)'根本沒有幫助你。它會告訴你有問題,但不是問題所在。直到生產完成,你應該使用'OR die(「Errormessage:%s \ n」,mysqli_error($ link))'',這樣你才能從中得到一些有用的信息。 – icecub

+0

@icecub謝謝,對我有用。 –

回答

0

它看起來像你希望imei的每個值在您的表中是唯一的。這是一個猜測,但它看起來像你在做什麼。

您可以通過將imei列定義爲唯一的方式在SQL中執行該操作:即通過在其上創建唯一索引。您現在的表格有一個id作爲唯一(主鍵)。您可以輕鬆創建另一個。