日記
数値型に空文字列を代入すると0と評価される (18:58)Edit

いやまあ、PHP的には当たり前なんだけど、なかなか気がつかなかったんで。

$value = '';
$do =& new FooTableDataObject();
$do->intvalue = $value;
$do->find();

とかすると、

select * from FooTable where intvalue = 0

になるってことね*1。もちろん、

$value = NULL;
$do =& new FooTableDataObject();
$do->intvalue = $value;
$do->find();

ならば、

select * from FooTable

になる。

当たり前でもないのか

これは、ここの

/* this is probably an error condition! */
$this->whereAdd(" $kSql = ".intval($this->$k));

で数値化されているパターンに該当するんだよな。ってことは、this is probably an error conditionなわけか。っつーか、DB_DataObjectの作法としては、find前にvalidateしろってことなのかな。

*1 ちなみにintvalueはnot null。null許可でも同じ結果になるけど

Published At2005-09-02 00:00Updated At2005-09-02 00:00