プロが教えるわが家の防犯対策術!

こんばんは。
MYSQLではint型、varchar型、text型、smallint型、tinity型、float型で
データが無いことを表すのはnullでも構わないですよね。

そのときPHPでMYSQLからデータを受け取ってデータが空かどうかを区別するには、
if(!a==null){}のようにnullを使うことになります。
PHPでnullを扱うのはトラブルの元になると参考書に書いてありました。

そういうときは、MYSQLでnullじゃなくて0が一番無難でしょうか。
また、0よりも半角文字や「データ無」のようにするべきですか。

A 回答 (2件)

時と場合による。


例えばテストの点数なんかをDBに格納したとしましょう。
この場合0は0点ですが、テストを受けなかった人が0点ではまずいでしょ。
テストを受けなかった人は点数なしに設定しておく必要があるでしょ。
(この場合、nullではなくてテストの点数としてあり得ない-1をデータなしとして扱うなども出来ます。)

またtext型に関してもnullでなくて""の様に空文字を入れておくことが出来ます。(nullと空文字は別物です。)

ちなみに
>if(!a==null){}のようにnullを使うことになります。
これはあまりいただけない比較の方法。
nullの比較はis_null()関数を使いなさい。
それと数値型の比較以外で「==」は使わないこと。(===や対応している関数があるならそれを利用すること)

>データを受け取ってデータが空かどうかを区別するには
空文字とnullは別物。

とこんな感じだけど質問者はDBに手を出す前にPHPの基本を理解していない。
    • good
    • 0

>MYSQLではint型、varchar型、text型、smallint型、tinity型、float型で



>そういうときは、MYSQLでnullじゃなくて0が一番無難でしょうか。
>また、0よりも半角文字や「データ無」のようにするべきですか。

数値型は集計する前提なのでNULLを利用するのが妥当です。
ただしNULL値が多いと想定される場合はテーブル構成を
変えてJOINして使う方が効率的です

文字列型はNULL文字が必ずしも妥当ではないので""で処理した方が
よいかもしれません。

また言語によってとくにPHPなどはデータ比較を柔軟に行うことがあり
NULL、0、""、false、"0"などをあいまいに同値として処理するケースがあります。
NULLをつかうのであれば厳密にデータを比較することをお勧めします
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!