Zend_Db kullanırken NULL bir değer ayarla nasıl

3 Cevap php

GÜNCELLEME performans ve Zend_Db kullanarak sorguları INSERT, ben sık sık (değil'') NULL eşit değerler ayarlamanız gerekir. Ancak, Zend_Db'nin varsayılan davranış :: insert () ve Zend_Db :: update () boş olan değerler boş dizelere çevrilir bu gibi görünüyor ('') ve gibi veritabanına koymak.

Herkes aslında değeri php boşsa alanlarına gitmek için bir NULL değeri zorlamak için bir yol biliyor mu?

3 Cevap

new Zend_Db_Expr('NULL') : için etkilenen alanları ayarlamayı deneyin

Ben her zaman sadece PHP'nin, null kullanarak bunu yapmak mümkün oldum:

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

Johrn gibi PHP'nin boş değer ile bunu başardı:

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

ancak veritabanının kendisi NOT NULL ayarlanmış sütun vardı ve bu gibi durumlarda değer gerçekten 0,00 boş dize ya da yüzen durumunda ya dönüştürüldü durumlarla karşılaştı. Ben INT sütun 0 olarak sona ereceğini tahmin ;-)