2012-12-27 136 views
0

我試圖根據它在表中的存在來插入或更新記錄的語句。如果存在「drug_name_pl」字段中的記錄,它將增加其「vote_sum」值1. 問題是,該語句在嘗試更新已存在的字段時會創建一條記錄。更新/插入記錄 - ON DUPLICATE KEY UPDATE - 不更新記錄

這裏是表結構:

   Field   Type  Null Key Default Extra 
       id    int(11) NO PRI NULL auto_increment 
       drug_name_pl varchar(11)NO MUL NULL  
       vote_sum  int(11) NO  NULL 

和查詢:

$query = "INSERT INTO lek_podstawowe(drug_name_pl) VALUES ('$drug_name_pl') 
ON DUPLICATE KEY UPDATE vote_sum=vote_sum+1"; 
+0

您需要'drug_name_pl'上的唯一索引 – a1ex07

回答

2

您需要在drug_name_pl

像添加唯一鍵:

CREATE UNIQUE INDEX drug_name_pl_unique ON table_name (drug_name_pl) 

別忘了t o將table_name更改爲表格的真實姓名。請確保您正確轉義$ drug_name_pl以保護申請表sql injection

+0

感謝您的回答。不幸的是,我得到了這個錯誤:#1064 - 你的SQL語法有錯誤;請查看第1行 –

+0

處'[drug_name_pl_unique] ON lek_podstawowe(drug_name_pl)'附近使用的正確語法對應的MySQL服務器版本手冊。請參閱更新,在mysql':D' –

+0

@JW中使用反斜槓代替括號。當名稱不是保留關鍵字時,不需要反引號或括號。 –

相關問題