Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Mysql插入当前结果,然后插入新结果_Php_Mysql_Insert - Fatal编程技术网

Php Mysql插入当前结果,然后插入新结果

Php Mysql插入当前结果,然后插入新结果,php,mysql,insert,Php,Mysql,Insert,我有一个ajax live表格编辑来更改我当前产品的价格。我要做的是在更改价格之前插入价格,然后插入更新后的价格。原因是我想显示更新后价格的变化。目前的价格是54美元,我把它改为57美元。我需要记录一整天的价格变化,并显示3.00美元的价格变化。在插入更新价格的同时,如何插入旧价格。谢谢。您可以为这两个字段维护不同的字段。就像旧的价值观和新的价值观一样。在一天结束时,您可以计算数值并打印差额。我建议您将价格表做成这样 table price ----------- id uns

我有一个ajax live表格编辑来更改我当前产品的价格。我要做的是在更改价格之前插入价格,然后插入更新后的价格。原因是我想显示更新后价格的变化。目前的价格是54美元,我把它改为57美元。我需要记录一整天的价格变化,并显示3.00美元的价格变化。在插入更新价格的同时,如何插入旧价格。谢谢。

您可以为这两个字段维护不同的字段。就像旧的价值观和新的价值观一样。在一天结束时,您可以计算数值并打印差额。

我建议您将价格表做成这样

table price
-----------
id          unsigned integer autoincrement primary key
article_id  integer /*link to articletable*/
valid_from  date
valid_until date
amount      decimal(10,2) /*always use decimal for money*/
然后,您可以使用以下4个查询插入新价格

/*hide changes from the rest of the world until we are done*/
START TRANSACTION

/*invalidate the latest existing price in the price table*/
UPDATE price 
SET valid_until = DATESUB(CURDATE(),INTERVAL 1 DAY) 
WHERE article_id = '100' ORDER BY valid_until DESC LIMIT 1
/*the order by selects the latest item, the limit does only 1 update*/

/*insert the new price*/
INSERT INTO PRICE (article_id, valid_from, valid_until, amount) 
VALUES ('100', CURDATE(), DATEADD(CURDATE(),INTERVAL 100 YEAR), '99.95')

/*show changes to the rest of the world*/
COMMIT
您需要该交易,否则将面临价格表不同步的风险。在价格表上将tabletype设置为
InnoDB
。 所有其他表都可以是
MyISAM
,只需确保
price
表是
InnoDB

您现在可以使用以下选项选择价格:

SELECT article.name
  ,price.amount as price_per_item
  ,purchase.qty as number_of_items
  ,price.amount * purchase.qty as amount 
FROM purchase
INNER JOIN article ON (article.id = purchase.article_id)
INNER JOIN price ON (price.article_id = purchase.article_id) 
  AND (purchase.transactiondate BETWEEN price.valid_from and price.valid_until)
WHERE purchase.id = '458'

只要做一个表,在有变化时插入一个新的记录init,并使用外键跟踪价格记录id。我希望这会给你一个想法,并且有两列,一列是更新的,一列是旧的。你为什么不在数据库中保留两个价格,而不是一个?否则,您是否可以在数据库中添加一个新的“增量”字段?