0

我正在尝试编写一个函数,如果它存在则更新 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); 

我需要做什么来解决这个问题?

4

2 回答 2

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());
                                                 ^^^^^^^^^^^^^^^^^^^^^^
于 2012-11-01T15:35:16.290 回答
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';
于 2012-11-01T16:02:03.673 回答