我有未知的鍵和值從CSV導入到數據庫。
我的代碼是
MySQL - 插入介紹,如果存在更新
while($data = fgetcsv($handle,1000,",",'"'))
{
$data=array_map('addslashes',$data); // apply addslashes() to all values
$data=array_combine($csv_fields,$data); // csv fields assoc (key=>value)
$data=array_intersect_key($data,$tbl_fields); // discard redundant
$tbl_fields_str=implode("`,`",array_keys($data));
$tbl_vals_str=implode("','",array_values($data));
$q="INSERT INTO `cmid` (`cmid`,`$tbl_fields_str`) VALUES ('$cmidtrenutni','$tbl_vals_str') ON DUPLICATE KEY UPDATE (`$tbl_fields_str`) VALUES ('$tbl_vals_str')";
$conn->query($q);
}
我需要插入,如果存在,更新。 我嘗試以上代碼,但不工作。
我找到類似http://dev.mysql.com/doc/refman/5.5/en/insert-on-duplicate.html
但這沒有幫助我的方式導致我的表沒有定義字段。每個輸入的鍵和值都不相同。
任何解決方案如何做到這一點?
的對重複密鑰需要在表中的主或唯一索引,否則。如果你想更新一行,如果它已經存在,這似乎暗示你所檢查的任何列都是唯一的,所以我建議在列上創建一個唯一的索引。 – DBug