【MySQL】nullを取得できないケースの対策

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で繰り返し初期化しても同様の結果になります。

カテゴリー: PHP, SQL パーマリンク

コメントを残す

メールアドレスが公開されることはありません。