2017-08-31 55 views
0

我明白這個問題可能已被問到,但我嘗試使用我在這裏找到的解決方案,他們沒有爲我工作。如果電子郵件列存在,我需要更新數據庫中的數據,否則應該插入新記錄。 這是我的代碼如下。在重複密鑰更新語法仍然重複我的數據

 <?php 

    $dbhost = 'localhost'; 
    $dbuser = 'root'; 
    $dbpass = ''; 
    $db = 'mbf'; 

    $dbconn = mysql_connect($dbhost, $dbuser, $dbpass); 
    mysql_select_db($db); 



    $dat = date("Y-m-d H:i:s"); 
    $date = new DateTime(); 
    $date->modify('+4 weeks'); 


    if(isset($_POST['submit'])) { 

    $email = $_POST['email']; 

      $dat = $_POST['date']; 
      $ghdate = $_POST['ghdate']; 
      $amount = $_POST['amount']; 
      $iniamount = $_POST['iniamount']; 
      $outamount = $_POST['outamount']; 
     $ghamount = $_POST['ghamount']; 




     $query = "INSERT INTO donation (email, date, ghdate, amount, 
    inamount, outamount, ghamount) VALUES ('$email', '$dat', 
    '$ghdate','$amount', 
'$iniamount', '$outamount', '$ghamount') 
     ON DUPLICATE KEY UPDATE 
email='$email', date='$dat', amount='$amount', inamount='$iniamount', 
outamount='$outamount', ghamount='$ghamount'"; 


if(mysql_query($query)) 
{ 
echo "<script>alert('Donation of $amount was successful');</script>"; 
} 
else 
{ 
echo "<script>alert('FAILED TO INSERT');</script>"; 
} 

} 


?> 

它不更新電子郵件列而是插入新記錄。

+1

是否將電子郵件列定義爲唯一(或主鍵)? – Mureinik

回答

2

ON DUPLICATE KEY UPDATE僅當任何字段值違反UNIQUE/PRIMARY KEY約束時,該語句才起作用。確保表格模式中的電子郵件字段具有UNIQUE約束。