blog.ishinao.net

29月/05

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

いやまあ、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許可でも同じ結果になるけど

このエントリーを含むはてなブックマークはてなブックマーク - 数値型に空文字列を代入すると0と評価される (18:58) Share on Tumblr このエントリをつぶやくこのWebページのtweets
Filed under: 日記 No Comments
29月/05

今日のスポクラ (13:00)

まあいつも通り。

このエントリーを含むはてなブックマークはてなブックマーク - 今日のスポクラ (13:00) Share on Tumblr このエントリをつぶやくこのWebページのtweets
Filed under: 日記 No Comments