2017-08-31 56 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约束。