2009-04-09 58 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,僅出於安全原因,而且還要避免類似於您的問題。