У меня есть таблица mysql с именем company_profile
. У него может быть только одна запись. Поэтому я попытался вставить и обновить данные таблицы с помощью запроса INSERT.... ON DUPLICATE KEY UPDATE
.INSERT ... ON DUPLICATE KEY UPDATE issue
Это, как я попробовал:
$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' ->' ПЕРВИЧНЫЙ КЛЮЧ (id), UNIQUE KEY (id) '. Итак, какой столбец должен вызывать 'ON DUPLICATE KEY' – Sean