PHPとMySQLを使っていて、null値の取得ができない場合の対策について覚書しておきます。
テーブルからデータを取り出し(fetch)して、繰り返し処理で、配列に値を入れる場合、当該データがNULL(null)のケースでは、上手くいかないことがあります。
具体的に言うと、null値でデータが無い場合には、ゼロ(0)が入って欲しいところ、データ自体(データの行そのもの)が無いものと処理されて、期待した結果にならないケースです。
この場合には、先に、当該データを0で初期化するのが一つの解決方法です。
つまり、あらがじめ、データを格納する配列の値に、繰り返し処理で0を代入しておく訳です。
$i = 1 ; while ($i <= count($data)) { $data[$i] = 0 ; //0に初期設定 $i++ ; } $sql = "SELECT * FROM table1" ; $res = mysql_query($sql) or die("error") ; while ($row = mysql_fetch_assoc($res)) { $i = $row["no"] ; $data[$i] = $row["value"] ; }
この様にゼロで初期化してから、データをfetchして配列$dataに入れれば、仮に、当該配列の値がnullで値を取れなくても、ゼロで初期化されているので、そのままゼロを出力できるようになるのです。
ちなみに、whileでなくforで繰り返し初期化しても同様の結果になります。