繁体   English   中英

使用Zend_Db时如何将值设置为NULL

[英]How to Set a Value to NULL when using Zend_Db

当使用Zend_Db执行UPDATE和INSERT查询时,我经常需要设置等于NULL的值(不是'')。 但是,Zend_Db :: insert()和Zend_Db :: update()的默认行为似乎是将空值转换为空字符串('')并将其放入数据库中。

有没有人知道如果在PHP中值为空,实际强制NULL值进入字段的方法?

尝试将受影响的字段设置为: new Zend_Db_Expr('NULL')

我总是能够使用PHP的null来做到这一点:

$toUpdate = array('nullValue' => null, 'otherValue' => 'something');
Zend_Db::update($table, $toUpdate, $where);

正如Johrn我能用PHP的null值做到这一点:

$value = null;
$what = array($columnName => $value);
$where = $this->_dbTableName->getAdapter()->quoteInto('Id = ?', $dbRecord->Id);
$this->_dbTableName->update($what, $where);

但遇到数据库本身将列设置为NOT NULL的情况,在这种情况下,该值确实转换为空字符串或FLOAT为0.00。 我猜INT列最终会为0 ;-)

虽然对于那些可能正在访问这个问题的人使用Zend 2.4.7,但我能够在William Lannen的回答中使用它来提供一些灵感。 假设getTable()返回Zend\\Db\\TableGateway对象:

public function fetch()
{
    $data['column_name1 = ?'] = 'column_value';
    $data[] = new \Zend\Db\Sql\Predicate\IsNull('column_name2');
    $resultSet = $this->getTable()->select($data);
    if (0 === count($resultSet) {
        return 'SomeExpectationOrException';
    } else {
        return $resultSet;
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM