码迷,mamicode.com
首页 > 数据库 > 详细

Zend_Db_Expr

时间:2014-09-11 19:25:42      阅读:303      评论:0      收藏:0      [点我收藏+]

标签:zenddb   php   

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

    public function setBatchDelete($orderIds) {
        $flag = YCL_Order::FLAG_DELETED;
        $updateTime = time();
        $data = array(
            'flag' => new Zend_Db_Expr("flag | $flag"),
            'update_time' => $updateTime
        );   
        $db = $this->getAdapter();
        $where = $db->quoteInto('service_order_id IN (?)',$orderIds);
        $this->update($data,$where);
    }

上面的例子 左边的flag是数据库中的flag。


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

框架不会对UNIX_TIMESTAMP()添加引号,从而让用户能正常使用此函数。


You also can create an object of type Zend_Db_Expr explicitly, to prevent a string from being treated as a column name.

Zend_Db_Expr

标签:zenddb   php   

原文地址:http://blog.csdn.net/arcticfoxhan/article/details/39209457

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!