Zend_Db_Expr

在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.

时间: 2024-10-23 17:10:16

Zend_Db_Expr的相关文章

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

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

Magento collection filtering 嵌套where条件的简单写法

只使用$collection->addFieldToFilter(),不使用addAttributeToFilter()或者Zend_Db_Expr(可用于更复杂的where语句) 例如:collection->getSelect()->where(new Zend_Db_Expr("(e.created_at > '2013-01-01 00:00:00' OR e.created_at <'2012-01-01 00:00:00)")); AND关系

magento sort array product IDs

$attributes = Mage::getSingleton('catalog/config')->getProductAttributes(); $collection = Mage::getModel('catalog/product') ->getCollection() ->addAttributeToFilter('entity_id', array('in' => $productIds)) ->addAttributeToSelect($attributes

Magento中直接使用SQL语句

原理: magento是基于Zend Framework的,所以底层用的还是zend的zend db 在文件app/code/core/Mage/Catalog/model/Resource/Eav /Mysql4/Config.php 中追踪到下面的函数 getAttributesUsedInListing() /*** Retrieve Product Attributes Used in Catalog Product listing** @return array*/public fun

magento的一些小技巧(转)

1.加载某个attribute: $attributeCode=Mage::getModel('catalog/resource_eav_attribute')                        ->load($attrbuteId)                        ->getData("attribute_code"); 2.获取某个attribute的所有option: $attributeObject=Mage::getModel('eav/

Magento给新产品页面添加分页

本文介绍如何让magento创建一个带分页功能的新到产品页面,方便我们在首页或者其它CMS Page调用和展示新到产品. 在Magento我们经常有的做法是建立一个可以调用新产品的block,然后通过: {{block type="catalog/product_new" column_count="6" products_count="100" name="home.catalog.product.new" alias=&q

magento首页调用最新产品

这个需要我们自己添加一个block块供我们调用,可参考new products的block类,建立文件app/code/core/Mage/Catalog/Block/Product/Special.php 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 <?php class Mage_Catalog_Block_Product_Special