トップ «前の日記(2005-09-01) 最新 次の日記(2005-09-03)» 編集

2002|01|02|03|04|05|06|07|08|11|12|
2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|02|03|04|07|

2005-09-02 [長年日記]

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

まあいつも通り。

Tags: 日常

_ 数値型に空文字列を代入すると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許可でも同じ結果になるけど