我有一个名为company_profile
的mysql表。它可能只有一个记录。所以我尝试使用INSERT.... ON DUPLICATE KEY UPDATE
查询来插入和更新表格的数据。INSERT ...在重复密钥更新问题
这是我试了一下:
$sql = "INSERT INTO company_profile (
company_name
, tel
, mobile
, fax
, email
) VALUES (?, ?, ?, ?, ?)
ON DUPLICATE KEY UPDATE
company_name= VALUES(company_name)
, tel = VALUES(tel)
, mobile = VALUES(mobile)
, fax = VALUES(fax)
, email = VALUES(email)";
$stmt = $mysqli->prepare($sql);
$stmt->bind_param('sssss', $company_name
, $telephone
, $mobile
, $fax
, $email
);
$stmt->execute();
我的问题是,当我更新数据,它总是插入新记录到我的表。
有人可以告诉我这是什么问题吗?
我的表结构是这样的:
CREATE TABLE IF NOT EXISTS company_profile (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
company_name VARCHAR(120) NOT NULL,
tel VARCHAR(20) NOT NULL,
mobile VARCHAR(20) NOT NULL,
fax VARCHAR(20) DEFAULT NULL,
email VARCHAR(60) NOT NULL,
PRIMARY KEY (id),
UNIQUE KEY (id)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
Mysql如何知道您插入的值不是重复的?你的主键是'id',你没有把它传递给你的查询。 –
唯一的唯一键是'id' - >'PRIMARY KEY(id),UNIQUE KEY(id)'。那么哪一列应该调用'ON DUPLICATE KEY' – Sean