我有一種將數據插入數據庫的表單。該表單將獲取字段的內容,然後在上下文中顯示顯示輸入信息的結果頁面。此頁面上有一個鏈接,用於編輯用戶信息,該信息可返回到上一個表單。顯然,我不希望插入重複的記錄。如果記錄已經存在,是否有簡單的方法來使用更新語句?我正在做這個與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. CrateIO 2.0.2 - 插入和更新問題
- 3. MySQL插入/更新問題
- 4. SQL,更新和插入
- 5. SQL更新和插入
- 6. 異步插入&更新異步插入&更新:NoSql和SQL
- 7. SQL插入問題
- 8. DBD :: SQLite的:插入或更新 - 問題
- 9. 實體框架插入更新問題!
- 10. SQL更新問題
- 11. SQL更新問題
- 12. Sql更新問題
- 13. SQL Server更新/插入/刪除連接問題
- 14. 在SQL Server中更新或插入問題?
- 15. 程序中的SQL插入更新問題
- 16. 有關使用SQL Server插入/更新行的問題(ASP.NET MVC)
- 17. 使用Linq-to-SQL +子關係更新/插入的問題
- 18. 問題與SQL和插入guid號
- 19. SQL觸發更新和插入
- 20. 在sql中插入和更新圖像
- 21. C# - SQL插入和更新速度
- 22. SQL性能;插入,選擇和更新
- 23. SQL - 找到對和更新+插入
- 24. 插入或SQL更新和PHP
- 25. 使用Linq-2-SQL插入和更新
- 26. 新手SQL更新問題
- 27. 插入linq-to-sql問題?
- 28. LINQ to SQL插入問題。 。
- 29. SQL插入性能問題
- 30. PHP SQL Server插入問題
你爲什麼不使用參數化查詢? – 2009-04-09 09:42:51