【发布时间】:2011-09-13 20:35:20
【问题描述】:
我有一个表格,其中包含 alias 和 item_id 列。这两个字段共同创建了一个唯一索引。
然后我有一些代码有一个 alias 和一个 item id 并且想要为它更新一条记录(或者如果它不存在则创建一条记录)
//get the current stats for this item
$stats = $model->query(
'SELECT *, DATEDIFF(NOW(),decayed) as days_since_decay, DATEDIFF(NOW(),created) as days_active
FROM popularity_views
WHERE item_id = '.$query[0][$model->alias]['id'].'
AND alias = "'.$model->alias.'"'
);
if(empty($stats))
{
//create new entry
$insert = $model->query(
'INSERT INTO popularity_views (item_id, views, alias, created, decayed)
VALUES ('.$query[0][$model->alias]['id'].', 1, "'.$model->alias.'", NOW(), NOW())'
);
}
不知何故,这段代码被调用了两次,我不确定如何。即使它被调用了两次,但这并不重要,因为如您所见,我会在添加条目之前检查以确保条目不存在。
但是,当加载此页面时(如果在加载页面之前条目不存在),它会尝试创建一个条目两次并抛出 SQL 错误 1062:重复条目。这对我来说没有意义。此外,如果该条目在页面加载之前就已经存在,那么它足够聪明,根本不会尝试添加它。
有什么想法吗?
【问题讨论】:
标签: mysql cakephp cakephp-1.3