- 締切済み
unknownが登録される
現在、登録システムを運用しており、その流れは入力→確認→DB登録です。 入力で参加競技を選択、タイムを入力します。タイムに何も入力されない場合はエラーメッセージを出力しています。 そしてデータを確認したところ、このタイムがunknownとなっていました。 タイムのフィールドタイプはvarcharにしています。 またNULLは「not null」を選択しています。 バージョンはMySQL4.1.18です。 unknownについて調べたのですが、真理値型でnullが関係しているということぐらいしかわかりませんでした。 どのような場合unknownが登録されてしまうのですか。 また、解決方法をご存知の方がいらっしゃいましたらご教授ください。 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- hrm_mmm
- ベストアンサー率63% (292/459)
>$sql = "INSERT INTO(…,Time,…)VALUES(…,'$time',…) "; phpの問題のようですね。 $timeを定義していないから、'unknown'と出力される。
- chukenkenkou
- ベストアンサー率43% (833/1926)
補足説明をお願いします。 >タイムに何も入力されない場合はエラーメッセージを出力 今回、問題としているデータは、タイムを入力した場合のデータで、間違いないですか? MySQLには、タイムをどういうデータの形式で、格納しているのでしょうか? →'02:49:00'や'024900'など、いろいろ考えられます。 >データを確認したところ、このタイムがunknownとなっていました。 確認したのは、どういうアプリケーションを使ってでしょうか? DB中に、「実際に'unknown'という文字が格納されてしまっているのか」、「アプリケーション側で何らかの値の場合、表示を変えているのか」の切り分けが必要です。 >タイムのフィールドタイプはvarcharにしています。 >またNULLは「not null」を選択しています。 「選択」ということは、phpMyAdmin等のアプリケーションで定義したということでしょうか? 可能なら、「show create table 表名」で表示される表定義、insert文の内容を示せませんか?
補足
chukenkenkouさん、ありがとうございます。 問題としていますのはタイムを入力した場合のデータで間違ございません。 格納しているタイムの形式は「0143.11」(1:43.11の場合)のようにしています。 phpMyAdminを使って管理しています。 >DB中に、「実際に'unknown'という文字が格納されてしまっているのか」、「アプリケーション側で何らかの値の場合、表示を変えているのか」の切り分けが必要です。 すみません、どちらかがわかりません。 実際のデータを見ると「unknown」となっています。 画面上に表示させてみてもunknownが表示されます。実際に格納されているということでしょうか。 表定義は`Time` varchar(16) NOT NULL default ''となっております。 insert文は $sql = "INSERT INTO(…,Time,…)VALUES(…,'$time',…) "; としています。 よろしくお願い致します。
お礼
hrm_mmmさん、ありがとうございます。 >$timeを定義していないから、'unknown'と出力される。 定義するとはどういうことでしょうか。$timeはどんな値でも文字列として 格納されるわけではないのですか? よろしければご教授ください。お願い致します。