关于zendframework中的Zend_Db_Expr(不自动加引号)

在zendframework中使用Db类时,框架会自动给sql语句添加引号以防止数据库攻击 ,这就导致了一个问题,用户无法使用zend db类使用mysql的内置函数(方法,存储过程等)。好在zend框架提供了一个类Zend_Db_Expr,此类的构造函数会告诉框架不要对它所转化的类型进行添加引号的操作。

   如:

  $select=$db->select();

   $select->from("testtable","*");

   $select->where($db->quotInto("date>=?",new Zend_Db_Expr("UNIX_TIMESTAMP()"));

   $db->fetchAll($select);

在上面的例子中,框架不会对UNIX_TIMESTAMP()添加引号,从而让用户能正常使用此函数

例子:

$data = array(
                    'id' => $this->getId(),
                    'status' => self::STATUS_CONFIRMED,
                    'confirmTime' => new Zend_Db_Expr('NOW()')
            );
            $this->save($data);

posted @ 2014-05-30 14:15  eterwei  阅读(358)  评论(0编辑  收藏  举报