2011-03-23 55 views
1

Zend中有一种将MySQL列中的整数加1的方法吗?在MySQL中增加一列

感谢

编辑:

我当前的代码是这样的:

$row = $this->find($imageId)->current(); 
$row->votes = // THIS IS WHERE I WANT TO SAY INCREMENT 
$row->save(); 
+1

是 - 你提供更多细节 – bensiu 2011-03-23 04:16:37

+0

你的意思是Zend框架后?如果是这样,哪个组件? Zend_Db,Zend_Db_Table,别的吗? – Phil 2011-03-23 04:32:02

回答

0

我可能提供以下建议

$row->votes++; 
+0

一个非常简单的解决方案。 谢谢。 – edwinNosh 2011-03-23 05:10:55

+2

这遭受连接之间的竞争条件,并且是一个不好的解决方案。 – 2012-08-03 23:01:15

17

是的,有。下面是使用的产品和递增数量字段的例子:

$table  = 'products'; 
$data  = array('prd_qnty' => new Zend_Db_Expr('prd_qnty + 1')); 
$where[] = $db->quoteInto('pr_id = ?', $this->pr_id); 
$db->update($table, $data, $where); 
+0

对我的旧回答或新回答是否是倒退?我很确定新的是正确的,不是吗? – RDL 2011-03-23 04:56:38

+0

查看更新的问题。谢谢 – edwinNosh 2011-03-23 05:02:15

+0

是的,'$ row-> votes ++;'是要走的路。将来它有助于在您的问题中显示相关代码,以便我们可以指导您找到最佳解决方案。 – RDL 2011-03-23 05:14:17

5

票++不保护免受其他请求的竞争条件,这就是为什么它是需要有一个数据库方案。

例如:假设有两个请求都在几乎同一时间

1st request loads object - votes is 500 
2nd request loads object - votes is 500 
1st increments value in memory - votes is 501 
2nd increments value in memory - votes is 501 
1st saves to db - votes is 501 
2nd saves to db - votes is 501 (should be 502)