2009-04-09 92 views
1

我有一种将数据插入数据库的表单。该表单将获取字段的内容,然后在上下文中显示显示输入信息的结果页面。此页面上有一个链接,用于编辑用户信息,该信息可返回到上一个表单。显然,我不希望插入重复的记录。如果记录已经存在,是否有简单的方法来使用更新语句?我正在做这个与Ajax和PHP。sql插入和更新问题

回答

2

MySQL支持将ON DUPLICATE KEY UPDATE添加到INSERT语句,该语句应该按照您的要求进行操作。

1

假设你有一个像'用户名'或'电子邮件'字段,你可以利用该字段来检查一个记录是否已经存在,如果有,更新它。

$res = mysql_query("SELECT primary_key FROM my_table WHERE `email` = '" . mysql_real_escape_string($email) . "'"); 

if($row = mysql_fetch_array($res)) 
{ 
    // Record exists, update it 
    $q = "UPDATE my_table SET `username` = '" . mysql_real_escap_string($username) . "' WHERE primary_key = " . (int) $row['primary_key']; 
} 
else 
{ 
    // Record doesn't exist, insert 
    $q = "INSERT INTO my_table(username, email) VALUES('" . mysql_real_escape_string($username) . "', '" . mysql_real_escape_string($email) . "');"; 
} 

在上面的例子中,我假设你有一个主键字段是一个整数(primary_key)。

+0

你为什么不使用参数化查询? – 2009-04-09 09:42:51

0

您应该考虑使用ORM,如http://www.ezpdo.net/blog/?p=2 只有在绝对必要时才会使用Web应用程序中的纯SQL,仅出于安全原因,而且还要避免类似于您的问题。