0

在我们的项目中有一个用来减少一本书的卖家数量的函数就是这个函数

class listab_Model_Books extends listab_Model_BaseBooks
{
    public function decreaseSeller($code)
    {
        $row = Doctrine_Query::create()
               ->from('listab_Model_Books b')
               ->where('b.code = ?',$code)
               ->fetchOne();
//            var_dump($row['seller']);
       $q = Doctrine_Query::create()
               ->from('listab_Model_Books b')
               ->set('b.seller = ?',$row['seller']-1)
               ->where('b.code = ?',$code)
               ->execute();
    }
}

当我尝试使用此功能时,它给了我这个错误

SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens dotrine

我究竟做错了什么 :(

4

1 回答 1

0

为正确性而编辑。

我相信“set”应该只与更新一起使用,如下所示:

Doctrine_Query::create()
->update('listab_Model_Books b')
->set('b.seller', '?', $row['seller']-1)
->where('b.code = ?',$code)
->execute();

如果您要尝试进行更新,则应使用“更新”子句。否则它将被视为选择。

于 2012-10-13T14:07:33.270 回答