我需要创建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,该如何记录?
这是我的数据库标签
-- ----------------------------
-- 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');
一些语法错误。这是您要拍摄的内容:
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。你需要一个UNIQUE KEY上date
您可以有许多唯一的关键候选者clash
,只需要一个。
因此,如果您不提供重复的ID,则该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)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句