在我的应用程序中,我有35个不同的网站,每个网站都有一个网站ID。在所有这些网站上,每个网站上都有不同的广告系列(Campaign_id)
我的目标是记录广告系列每天在网站上的点击次数。如果site_id / campaign_id / todays日期不存在,我需要它来自动创建记录。如果它确实存在,它应该只更新命中。在这个例子中,我只是随机生成网站ID和广告系列ID,例如清酒
$site_id = rand(1,99);
$campaign_id = rand(1,99);
mysql_query("INSERT INTO `out` (site_id,campaign_id,hits) VALUES(".$site_id.",".$campaign_id.",1)
WHERE date = '".date('Y-m-d')."'
ON DUPLICATE KEY UPDATE hits=hits+1,
date = '".date('Y-m-d')."'
");
以上内容将完全符合我的要求,但日期字段始终如此 0000-00-00。我需要它是今天的日期,之后每次交易都需要+1。你们中任何一个有能力的人都知道如何改变它以使其发挥作用?
答案 0 :(得分:0)
答案很简单。只需插入日期,即可有效地使每个网站,广告系列和日期独一无二。插入后,下一个事务将只更新命中。第二天,将创建一条新记录,因为日期已更改,第二天的点击将在下一天的记录中更新。
@mysql_query("INSERT INTO `out` (site_id,campaign_id,hits,date) VALUES(".$site_id.",".$campaign_id.",1,'".date('Y-m-d')."')
ON DUPLICATE KEY UPDATE hits=hits+1
");
答案 1 :(得分:0)
首先,您需要(site_id, campaign_id, date)
上的唯一索引/约束:
create index unq_out_site_campaign_date on `out`(site_id, campaign_id, date)
(请注意,列可以按任何顺序排列。)
然后您可以使用以下代码插入表中:
INSERT INTO `out` (site_id, campaign_id, date, hits)
VALUES(".$site_id.", ".$campaign_id.", CURDATE(), 1)
ON DUPLICATE KEY UPDATE hits = hits+1;
据推测,你的目标是增加今天的点击量。如果没有,请传入当前日期的值并遵循相同的逻辑。