こんばんは。
MYSQLではint型、varchar型、text型、smallint型、tinity型、float型で
データが無いことを表すのはnullでも構わないですよね。
そのときPHPでMYSQLからデータを受け取ってデータが空かどうかを区別するには、
if(!a==null){}のようにnullを使うことになります。
PHPでnullを扱うのはトラブルの元になると参考書に書いてありました。
そういうときは、MYSQLでnullじゃなくて0が一番無難でしょうか。
また、0よりも半角文字や「データ無」のようにするべきですか。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
時と場合による。
例えばテストの点数なんかをDBに格納したとしましょう。
この場合0は0点ですが、テストを受けなかった人が0点ではまずいでしょ。
テストを受けなかった人は点数なしに設定しておく必要があるでしょ。
(この場合、nullではなくてテストの点数としてあり得ない-1をデータなしとして扱うなども出来ます。)
またtext型に関してもnullでなくて""の様に空文字を入れておくことが出来ます。(nullと空文字は別物です。)
ちなみに
>if(!a==null){}のようにnullを使うことになります。
これはあまりいただけない比較の方法。
nullの比較はis_null()関数を使いなさい。
それと数値型の比較以外で「==」は使わないこと。(===や対応している関数があるならそれを利用すること)
>データを受け取ってデータが空かどうかを区別するには
空文字とnullは別物。
とこんな感じだけど質問者はDBに手を出す前にPHPの基本を理解していない。
No.2
- 回答日時:
>MYSQLではint型、varchar型、text型、smallint型、tinity型、float型で
>そういうときは、MYSQLでnullじゃなくて0が一番無難でしょうか。
>また、0よりも半角文字や「データ無」のようにするべきですか。
数値型は集計する前提なのでNULLを利用するのが妥当です。
ただしNULL値が多いと想定される場合はテーブル構成を
変えてJOINして使う方が効率的です
文字列型はNULL文字が必ずしも妥当ではないので""で処理した方が
よいかもしれません。
また言語によってとくにPHPなどはデータ比較を柔軟に行うことがあり
NULL、0、""、false、"0"などをあいまいに同値として処理するケースがあります。
NULLをつかうのであれば厳密にデータを比較することをお勧めします
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL `picture` varchar(255) のコマンドで間違いないでしょうか? 1 2022/11/21 04:08
- MySQL my_itemsテーブルのIDにAUTO_INCREMENT を追加ができるかで 1 2023/01/03 09:09
- MySQL PHPとMySQLを使った掲示板の作り方 1 2022/06/02 13:00
- MySQL SHOW CREATE TABLE posts;これって何ですか? 3 2022/08/28 22:57
- PostgreSQL DBFluteについて質問です。 環境:PostgreSQL java8 前提:webアプリケーショ 1 2022/07/07 00:49
- MySQL エラー 1068 (42000): 複数の主キーが定義されていますエラー 2 2022/11/17 04:36
- MySQL テーブル作成です。どこかのスペルが間違っているか記号など スペースかな? 1 2022/10/01 05:08
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- MySQL あと、MySQLの文字コードはutf8 気になりますね 1 2022/12/01 07:22
- Perl 画像が表示でnull; this.src 1 2022/04/19 11:31
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
pandasでsqlite3にテーブル作成...
-
自作アプリからAPIで他のアプリ...
-
ListBoxにAddItemする際、重複...
-
csvデータ不要列の削除をbatフ...
-
Excel VBAのユーザーフォームで...
-
VBAでの行数を揃える方法
-
【SQL】他テーブルに含まれる値...
-
フラグをたてるってどういうこ...
-
SELECT INTOで一度に複数の変数...
-
sqlに記述できない文字
-
認知心理学で言うスクリプトとは?
-
Accessで今日から5日後
-
UPDATEで既存のレコードに文字...
-
truncate tableを使って複数の...
-
viewの性能
-
timestampのデータはどのように...
-
Accessで最新のレコード...
-
テーブル名が可変の場合のクエ...
-
同一テーブル内での比較(最新...
-
Excelでしりとりを作る方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
pandasでsqlite3にテーブル作成...
-
csvデータ不要列の削除をbatフ...
-
Excel VBAのユーザーフォームで...
-
VBAでの行数を揃える方法
-
追加クエリで重複データなしで...
-
【VB】セルが空になるまで処理...
-
マクロでファイルを読み込み、...
-
EXCELで外部データの取り込みが...
-
ListBoxにAddItemする際、重複...
-
JDBCを使ってdate型へのINSERT...
-
ACCESS VBAでSeekメソッドの処...
-
自作アプリからAPIで他のアプリ...
-
MySQLでauto_incrementをつかわ...
-
エクセルで去年のデータを今年...
-
エクセル 2つの列にある値の完...
-
PHPとMYSQL、DBのデータが空の...
-
データテーブルの使い方に関して
-
リストボックスとDataGridコン...
-
vacummdbについて
-
【ExcelVBA】範囲選択の方法に...
おすすめ情報