我需要创建Chart analist,我想记录当天所做的事情。我到处寻找,找不到如何工作,我找到了一些但不好插入,这里我有代码
$mysqli->query('
INSERT INTO chart_sales (date, sales_order) VALUES (Now(), sales_order +1)
ON DUPLICATE KEY UPDATE sales_order =VALUES(+1)');
$rslt = mysql_query($stmt);
如何记录当天所做的事情,以及如果你再设定另一个日期以生成另一个ID?
这是我的DATABASE TABEL
-- ----------------------------
-- Table structure for `chart_sales`
-- ----------------------------
DROP TABLE IF EXISTS `chart_sales`;
CREATE TABLE `chart_sales` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`date` date NOT NULL DEFAULT '0000-00-00',
`sales_order` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of chart_sales
-- ----------------------------
INSERT INTO `chart_sales` VALUES ('1', '2015-09-11', '1');
INSERT INTO `chart_sales` VALUES ('2', '2015-09-11', '1');
INSERT INTO `chart_sales` VALUES ('3', '2015-09-11', '1');
INSERT INTO `chart_sales` VALUES ('4', '2015-09-11', '1');
答案 0 :(得分:3)
一些语法错误。以下是你拍摄的内容:
INSERT INTO chart_sales (date, sales_order) VALUES (Now(), someValue)
ON DUPLICATE KEY UPDATE sales_order =sales_order +1
date
上需要唯一键。
它的工作关键是架构必须具有现有的唯一键,无论是Primary Key
(PK)还是unique key
,它都是冲突候选者。在你的情况下,你所拥有的只是PK。您需要date
clash
可以有许多唯一的候选键,只需要一个。
因此,如果您没有提供重复的ID,那么它将是INSERT
。如果有clash
,那么UPDATE
就会发生。
注意:clash
表示尝试否则会违反唯一性,这在这里是一件好事,因为声明,UPDATE会发生。
CREATE TABLE `chart_sales` (
`id` int(11) AUTO_INCREMENT primary key,
`date` date NOT NULL,
`sales_order` int(11) NOT NULL,
unique key(`date`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `chart_sales` (date,sales_order) VALUES ('2015-09-11',1) on duplicate key update sales_order=sales_order+1;
INSERT INTO `chart_sales` (date,sales_order) VALUES ('2015-09-22',1) on duplicate key update sales_order=sales_order+1;
INSERT INTO `chart_sales` (date,sales_order) VALUES ('2015-09-22',1) on duplicate key update sales_order=sales_order+1;
INSERT INTO `chart_sales` (date,sales_order) VALUES ('2015-09-22',1) on duplicate key update sales_order=sales_order+1;
...
select * from chart_sales;
+----+------------+-------------+
| id | date | sales_order |
+----+------------+-------------+
| 1 | 2015-09-11 | 1 |
| 2 | 2015-09-22 | 3 |
+----+------------+-------------+
2 rows in set (0.00 sec)