在DUPLICATE KEY UPDATE

时间:2016-11-24 15:18:35

标签: php mysql codeigniter

收到错误 - '重复输入'9'用于关键'accountID'ERROR 1062。

我正在尝试使用ON DUPLICATE KEY UPDATE来更新已插入数据库的任何字段。

关于计划的背景:

我有三张桌子。帐户,地址和个人资料。由于对人和地址的外键约束,我不能使用简单的更新查询,因此我正在使用它。我不确定我是否错误地使用它,或者我不理解它的逻辑。如果有人能伸出一手会很棒的话。 我认为问题在于插入表单数据的方法。我在下面添加了说明。

在我的函数中,我以相同的形式更新两个表(地址和人)。因为人员引用地址ID,所以在插入人员数据之前需要插入地址数据。根据我的代码,问题在于人员数据插入(w / on duplicate ...),虽然地址插入(重复...)有效,但它不更新行,只是添加了一行 - 这仍然是错误的。我试图通过下面的第二个插入语句来理解这个问题。

注意:假设所有数组字段($ addressData,$ profileData)都是正确的,它们在没有ON DUPLICATE KEY UPDATE函数的情况下工作。

谢谢!

$this->db->insert('address', $addressData).'ON DUPLICATE KEY UPDATE country=country+1, city=city+1, streetName=streetName+1, postcode=postcode+1, buldingNumber= buldingNumber+1';

$this->db->insert('person', $profileData).'ON DUPLICATE KEY UPDATE firstname=firstname+1, lastname=lastname+1,addressID='.$addressID.'+1, dob=dob+1, religion=religion+1, locationFlexibility=locationFlexibility+1';

0 个答案:

没有答案