我有一种将数据插入数据库的表单。该表单将获取字段的内容,然后在上下文中显示显示输入信息的结果页面。此页面上有一个链接,用于编辑用户信息,该信息可返回到上一个表单。显然,我不希望插入重复的记录。如果记录已经存在,是否有简单的方法来使用更新语句?我正在做这个与Ajax和PHP。sql插入和更新问题
1
A
回答
2
MySQL支持将ON DUPLICATE KEY UPDATE添加到INSERT语句,该语句应该按照您的要求进行操作。
5
看看:
INSERT ... ON DUPLICATE
:http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.htmlREPLACE INTO
:http://dev.mysql.com/doc/refman/5.0/en/replace.html
INSERT ... ON DUPLICATE
将让你问题的更新查询时唯一索引或PRIMARY KEY已匹配。
REPLACE
工作原理完全相同,但是如果找到该行,则在插入新行之前删除旧行。当使用级联删除时,这是特别需要考虑的事情!
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
您应该考虑使用ORM,如http://www.ezpdo.net/blog/?p=2 只有在绝对必要时才会使用Web应用程序中的纯SQL,仅出于安全原因,而且还要避免类似于您的问题。
相关问题
- 1. SQL插入/更新问题
- 2. SQL,更新和插入
- 3. SQL更新和插入
- 4. 异步插入&更新异步插入&更新:NoSql和SQL
- 5. SQL插入问题
- 6. 实体框架插入更新问题!
- 7. DBD :: SQLite的:插入或更新 - 问题
- 8. Sql更新问题
- 9. SQL更新问题
- 10. SQL更新问题
- 11. 使用Linq-2-SQL插入和更新
- 12. SQL - 找到对和更新+插入
- 13. 在SQL Server中更新或插入问题?
- 14. SQL Server更新/插入/删除连接问题
- 15. 有关使用SQL Server插入/更新行的问题(ASP.NET MVC)
- 16. 使用Linq-to-SQL +子关系更新/插入的问题
- 17. 问题与SQL和插入guid号
- 18. 插入,更新SQL查询
- 19. RIA服务和nHibernate插入新问题
- 20. 插入linq-to-sql问题?
- 21. LINQ to SQL插入问题。 。
- 22. PHP SQL Server插入问题
- 23. SQL插入性能问题
- 24. 更新表格和插入表格问题PHP
- 25. 如何剖析和解决插入/更新性能问题?
- 26. MySQL插入和更新触发器问题
- 27. LINQ to SQL更新问题
- 28. 更新问题在sql
- 29. 吨-SQL更新问题
- 30. 高级SQL更新问题
你为什么不使用参数化查询? – 2009-04-09 09:42:51