Zend_Db_Table_Abstract和Zend_Db_Expr

nni*_*ols 2 php zend-framework zend-db-table

我最近继承了一个使用ZF编写的应用程序,它在db中加密了各种字段.有很多模型扩展Zend_Db_Table_Abstract,其代码与此示例类似 -

<?php
class Partner extends Zend_Db_Table_Abstract {

    protected $_name = 'partner', $_primary = 'id';

    public function createPartner( $mobile ){

        $id = $this->insert( array(
                        'mobile' => new Zend_Db_Expr("AES_ENCRYPT('$mobile', 'random_key')"),
                        'createdOn' => date('Y-m-d H:i:s', mktime())
                    ) );

        $res = $this->find($id);
        return $res->current();
    }

}
?>
Run Code Online (Sandbox Code Playgroud)

我对这段代码的关注是$ mobile正在逐字传递到查询中.修改此值设置方式的最简洁方法是什么,以便它使用quoteInto或其他一些使用占位符来参数化查询的方法?

nni*_*ols 5

怎么样

public function createPartner( $mobile ){

    $id = $this->insert( array(
                    'mobile' => new Zend_Db_Expr($this->getAdapter()->quoteInto("AES_ENCRYPT(?, 'random_key')", $mobile)),
                    'createdOn' => date('Y-m-d H:i:s', mktime())
                ) );

    $res = $this->find($id);
    return $res->current();
}
Run Code Online (Sandbox Code Playgroud)

这似乎有效,但是我有一些问题,我错过了吗?