我试图编写一个函数来更新mysql表,如果它被激活,或者创建它,如果它没有。
我的脚本仍然会创建一个新条目而不是更新。
这是我的sql结构:
CREATE TABLE IF NOT EXISTS `loan` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`bank_id` int(11) DEFAULT NULL,
`name` longtext COLLATE utf8_unicode_ci,
`rate` decimal(8,3) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `loan_0b0af02d` (`bank_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;
这是我的php脚本:
$item_insert_sql = "INSERT INTO loan(id, bank_id, name, rate) VALUES ('" . $id . "', '" . $bank_id . "', '" . $name . "', '" . $rate . "'), primary key (id), ON DUPLICATE KEY UPDATE (name='$name', rate='$rate')";
$insert_item = mysql_query($item_insert_sql, $db);
我需要做些什么来解决这个问题?
答案 0 :(得分:2)
您的插入语句不正确。您无法在插入中定义主键,并且您的on duplicate
语法也很糟糕:
INSERT INTO table (... fields ...) VALUES (... values ...)
ON DUPLICATE KEY SET field1=value1, field2=value2, etc...
如果你在query()调用上有最小的错误处理,你就会收到错误消息:
$insert_item = mysql_query($item_insert_sql, $db) or die(mysql_error());
^^^^^^^^^^^^^^^^^^^^^^
答案 1 :(得分:1)
您可以尝试以下查询:
$item_insert_sql = "INSERT INTO loan(id, bank_id, name, rate) VALUES ('" . $id . "', '" . $bank_id . "', '" . $name . "', '" . $rate . "') ON DUPLICATE KEY UPDATE name='$name', rate='$rate';