Mysql 在zend中使用动态数据更新查询?
我正在使用zend,我有如下代码Mysql 在zend中使用动态数据更新查询?,mysql,zend-framework,zend-db,Mysql,Zend Framework,Zend Db,我正在使用zend,我有如下代码 class Admin_Model_DbTable_Inv extends Zend_Db_Table_Abstract { protected $_name = 'test'; public function updateproductstock($qty,$pid) { $data = array( 'stock' => 'stock - 2' ); $th
class Admin_Model_DbTable_Inv extends Zend_Db_Table_Abstract
{
protected $_name = 'test';
public function updateproductstock($qty,$pid)
{
$data = array(
'stock' => 'stock - 2'
);
$this->_db->update($this->_name, $data, product = '.$pid.');
}
}
在这里,我想从库存中减去我的数量。例如,2将是数量<代码>数量将是动态数据。如何在此处使用zend update。请帮忙
更新了我的帖子
class Admin_Model_DbTable_Inv extends Zend_Db_Table_Abstract
{
protected $_name = 'test';
public function updateproductstock($qty)
{
$r = $this->fetchRow($this->select()->where('product = ?', 1));
$r->stock -= $qty;
$r->save();
$data = array(
'stock' => 'stock - '.(string) $qty;
);
$this->_db->update($this->_name, $data, "product = '1'");
}
}
ps:所有变量的前缀应为$$db->引用数据库对象(类)。请您发布这段代码所指的类,好吗?或者至少是“更新”function@luc,我同意这个问题有点含糊不清,但是关于zend framework,你可以想象它指的是什么以及他的更新方法。@LukeCoulton这是zend framework,
update
是zend_Db的方法。抱歉,我错过了zend framework标签。我使用zend studio纯粹是为了编程$oDb->update('test',$values,'product_id=34');这会更新当前股票中的0值,当我运行这个$values=array('stock'=>'41-'(string)2)时$oDb->update('test',$values,'product_id=34');它将41更新为库存,并且不减去库存。所以这个查询不起作用。@Dinesh您得到的是0,可能是因为您的列是INT,所以如果您用字符串填充它,它将被转换为整数(这里给出0)。看看我的答案,也许会有用。@Matthieu你是对的,我不明白,只要无法识别任何变量……实际上我想从测试表中的数量中减去库存值,然后从数据库中读取当前库存值,并使用我答案的代码(我将对其进行编辑)是的,但是假设我的购物车中有10个产品,我将循环这个updateproductstock函数,然后它将需要一些时间来执行。这将是无效的。对不起我的错误。我给它只是一个例子…会立即更新帖子好的,我终于得到了你想要做的。请参阅我的编辑,也许Zend_Db_Expr可以,它可以防止Zend_Db转义字符串(因此它将是一个有效的SQL表达式)。
class Admin_Model_DbTable_Inventory extends Zend_Db_Table_Abstract
{
protected $_name = 'test';
public function updateproductstock($qty,$pid)
{
$data = array(
'stock' => new Zend_Db_Expr('stock - '.$qty);
);
$this->_db->update($this->_name, $data, product = '.$pid.');
}
}