• 締切済み

unknownが登録される

現在、登録システムを運用しており、その流れは入力→確認→DB登録です。 入力で参加競技を選択、タイムを入力します。タイムに何も入力されない場合はエラーメッセージを出力しています。 そしてデータを確認したところ、このタイムがunknownとなっていました。 タイムのフィールドタイプはvarcharにしています。 またNULLは「not null」を選択しています。 バージョンはMySQL4.1.18です。 unknownについて調べたのですが、真理値型でnullが関係しているということぐらいしかわかりませんでした。 どのような場合unknownが登録されてしまうのですか。 また、解決方法をご存知の方がいらっしゃいましたらご教授ください。 よろしくお願いします。

みんなの回答

  • hrm_mmm
  • ベストアンサー率63% (292/459)
回答No.2

>$sql = "INSERT INTO(…,Time,…)VALUES(…,'$time',…) "; phpの問題のようですね。 $timeを定義していないから、'unknown'と出力される。

99Micchi
質問者

お礼

hrm_mmmさん、ありがとうございます。 >$timeを定義していないから、'unknown'と出力される。 定義するとはどういうことでしょうか。$timeはどんな値でも文字列として 格納されるわけではないのですか? よろしければご教授ください。お願い致します。

全文を見る
すると、全ての回答が全文表示されます。
回答No.1

補足説明をお願いします。 >タイムに何も入力されない場合はエラーメッセージを出力 今回、問題としているデータは、タイムを入力した場合のデータで、間違いないですか? MySQLには、タイムをどういうデータの形式で、格納しているのでしょうか? →'02:49:00'や'024900'など、いろいろ考えられます。 >データを確認したところ、このタイムがunknownとなっていました。 確認したのは、どういうアプリケーションを使ってでしょうか? DB中に、「実際に'unknown'という文字が格納されてしまっているのか」、「アプリケーション側で何らかの値の場合、表示を変えているのか」の切り分けが必要です。 >タイムのフィールドタイプはvarcharにしています。 >またNULLは「not null」を選択しています。 「選択」ということは、phpMyAdmin等のアプリケーションで定義したということでしょうか? 可能なら、「show create table 表名」で表示される表定義、insert文の内容を示せませんか?

99Micchi
質問者

補足

chukenkenkouさん、ありがとうございます。 問題としていますのはタイムを入力した場合のデータで間違ございません。 格納しているタイムの形式は「0143.11」(1:43.11の場合)のようにしています。 phpMyAdminを使って管理しています。 >DB中に、「実際に'unknown'という文字が格納されてしまっているのか」、「アプリケーション側で何らかの値の場合、表示を変えているのか」の切り分けが必要です。 すみません、どちらかがわかりません。 実際のデータを見ると「unknown」となっています。 画面上に表示させてみてもunknownが表示されます。実際に格納されているということでしょうか。 表定義は`Time` varchar(16) NOT NULL default ''となっております。 insert文は $sql = "INSERT INTO(…,Time,…)VALUES(…,'$time',…) "; としています。 よろしくお願い致します。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • テーブルに空文字を入力させない方法

    MYSQLで下記のようなテーブルがあります。codeが主キーになっています。 +---------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---------+--------------+------+-----+---------+-------+ | day | varchar(255) | YES | | NULL | | | time_mm | varchar(255) | YES | | NULL | | | time_ss | varchar(255) | YES | | NULL | | | id | varchar(255) | YES | | NULL | | | code | varchar(255) | NO | PRI | NULL | | | stock | varchar(255) | YES | | NULL | | +---------+--------------+------+-----+---------+-------+ selectでデータを引っ張ってくると下記のようになります。 +------+---------+---------+-------+------+-------+ | day | time_mm | time_ss | id | code | stock | +------+---------+---------+-------+------+-------+ | NULL | NULL | NULL | dd | | NULL | | 1111 | 2222 | 3333 | 4444 | 1234 | 6666 | | 11 | 22 | 33 | 44 | 4649 | 66 | | 111 | 222 | 333 | 444 | 5963 | 666 | | NULL | NULL | fdfd | fdfd | fd | NULL | +------+---------+---------+-------+------+-------+ codeの一番上が空文字列になっているので、テーブルにデータが入っていると思うのですが、空文字も入力不可にさせたいです。 どのようにすれば実現させることができるでしょうか?

  • PHPで入力した内容をMYSQLに登録するとエラーが表示。

    PHPで入力した内容をMYSQLに登録するとエラーが表示。 PHP側のフォームにパソコンと入力しMYSQL側に登録すると、 DB Error unknown errorと表示されていますが、 MYSQLのデータベースの中を確認すると、パソコンと登録されています。 PHPとMYSQLはsjisで設定します。 このエラーの回避は出来るのでしょうか?ご教授お願いします。

    • 締切済み
    • PHP
  • MysqlにURLを登録する方法

    MysqlにURLを登録したあと、それをXMLで落として、使用したいと考えています。 MysqlにURLを登録する場合、テーブルに項目名を「hpurl」と設けたとして、データ型・照合順序はどうすればいいのでしょうか。 (入力はDBに直接、手入力、またはCSVからインポートする予定です) データ型は「varchar(255)」・照合順序は「ascii_general_ci」でいいのでしょうか。 また、そのほか留意することがあるでしょうか。 ご教示いただきたく宜しくお願い致します。

  • データベースへの接続

    以前の質問の、PHP+MySQLの「データを検索して表示する」についての続きなのですが、データを検索すると、 DB Error: not found という画面が出ました。これは構文はあってるけどDBが見つからないって事なんですか? データベースは「速効!図解プログラミングPHP+MySQL」を見ながら、下記のように作りました。 mysql> show fields from member; +------------+---------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +------------+---------------------+------+-----+---------+----------------+ | id | mediumint(9) | NO | PRI | NULL | auto_increment | | last_name | varchar(50) | YES | | NULL | | | first_name | varchar(50) | YES | | NULL | | | age | tinyint(3) unsigned | YES | | NULL | | +------------+---------------------+------+-----+---------+----------------+ 4 rows in set (0.01 sec) MYSQLをインストールした後で、XAMPPをダウンロードしたのですが、それが原因なんでしょうか? 解決策を教えてください。 質問ばかりしていますが、よろしくお願いします。

    • ベストアンサー
    • PHP
  • フィールドに関して

    こんにちは。お世話になっております。 現在、右も左も分からないまま、書籍を参考に、DB(MySQL)を触り始めて2ヶ月足らずの初心者ですが、とあるサイトに、PostgreSQLの設定として以下のようなものが紹介されておりました。 sid、uidなどは分かるのですが、最後のフィールド(rdate)はどのような意味を持つものなのでしょうか? 初めて見る内容のものなので、DBの違いによるものなのか?などなど、DBの設定の意味が分からず躓いております。 お忙しい中恐縮ですが、ご教授頂ければ幸いです。 CREATE TABLE session ( sid varchar(32) primary key, uid varchar(16) not null, password varchar(16), rawdata varchar(512), rdate timestamp default 'now' );

  • DB設計についてアドバイスお願いします。

    作成するアプリケーションは簡単なスケジュール管理のできるWEBアプリケーションです。 以下、作成予定のテーブルです。 <tbl_date> id VARCHAR(50) ・・・PRIMARYKEY / not null / AUTO INCREMENT date VARCHAR(8) ・・・not null <tbl_schedule> id VARCHAR(50) ・・・PRIMARYKEY 、not null 、AUTO INCREMENT morning VARCHAR(50) afternoon VARCHAR(50) evening VARCHAR(50) 以下、ページ詳細です。ユーザー側と管理側に分けています。 <ユーザー側> 1ページ目 ⇒はじめのページで日付を選択する。プルダウンメニューで日付を選択してsubmitボタンを押すと選択された日付がDBに登録され、次の画面に遷移する。 2ページ目 ⇒登録されているスケジュールをDBから呼び出して表示する。 <管理側> 1ページ目 ⇒はじめのページで日付を選択する ※ユーザー側とは別のページ 2ページ目 ⇒スケジュールの編集画面。テキストフォームと登録されているスケジュールをDBから呼び出して表示する。 DB設計は初挑戦なので見当違いなところ多くあると思います... ご指摘、アドバイス等いただけたらと思います。よろしくお願いいたします。

  • dbに登録したデータをphpのプルダウンに表したい

    mysqlに登録したデータをphpのプルダウンに表示させたいです。 database [db1] table [unit]カラム group varchar(20) に登録しているグループ名5個を選べるようにしたいのですが知恵を拝借できますでしょうか。 <?php $s=mysql_connect("サーバー名","アカウント","パスワード") or die("失敗しました"); print "接続OK"<BR>; mysql_select_db("db1"); ここから先が知りたいです。 みなさまのお知恵を拝借したいです。 ぜひよろしくお願い致します。

    • ベストアンサー
    • PHP
  • 新規登録したデータが表示されない理由は?

    別言語からPHPに移行してきた初心者です。 新規登録スクリプトTouroku.phpを実行し、その直後、入力確認用kakunin.phpで全件表示させようとすると、新規で入力したデータ以外のデータしか表示されません。 DBはMysqlですが、DBにはデータが登録されていることが確認できています。 (症状1)新規入力から確認用表示までのスクリプトを1本化すると新規入力データは表示されます。 (症状2)新規登録スクリプトTouroku.phpを実行したあと、ブラウザを一旦閉じてからkakunin.phpを実行した場合、データがきちんとすべて表示されます。 (症状3)EclipseのPHP Browserでは続けて2回kakunin.phpを実行すると全件が表示されますが、IE上では何回実行しても新規入力データは非表示のままです。 (対策1)DBがロックしているかと思い、それぞれのスクリプトに「mysql_close()」を入れてみましたが、結果は同じでした。 ApacheとMysqlはXampp2.5でインストールしています。 どなたか解決方法をご教授ください。

    • ベストアンサー
    • PHP
  • php MySQL データ登録 方法

    以前もご質問させていただいたのですが、調べてもわからず困り果てています。 PHPとMySQLは初心者です。 PHPのバージョンはPHP 5.2.12 MySQLのバージョンは 5.1 サーバーはさくらインターネットを使用しています。 コードは下記のとおりになります。 form.php <html> <body> <form action="complete.php" method="POST"> <input type="text" name="id"> <input type="text" name="password"> <input type="text" name="first_name"> <input type="text" name="last_name"> <input type="text" name="first_kana"> <input type="text" name="last_kana"> <?php print '<select name="b_year">'."\n"; $start = date('Y') -40; $end = date('Y') -16; for ($i = $start; $i <= $end; $i++) { $selected = ""; $selected = ($_POST["b_year"] == sprintf('%04d',$i)) ? "selected":""; print '<option value="' . sprintf('%04d',$i) . '" '.$selected.'>' . sprintf("%04d",$i) . '</option>' . "\n"; } print '</select> 年' . "\n"; (文字数のためb_monthとb_dayを省略) ?> <input type="text" name="number"> <input type="text" name="height"> <input type="text" name="weight"> <input type="submit" name="regist" value="登録"> <input type="reset" name="reset" value="リセット"> </form> </body> </html> complete.php <?php ・ ・ $id = mysql_real_escape_string($_POST['id']); $password = mysql_real_escape_string($_POST['password']); $first_name = mysql_real_escape_string($_POST['first_name']); $last_name = mysql_real_escape_string($_POST['last_name']); $first_kana = mysql_real_escape_string($_POST['first_kana']); $last_kana = mysql_real_escape_string($_POST['last_kana']); $year = mysql_real_escape_string($_POST['b_year']); $month = mysql_real_escape_string($_POST['b_month']); $day = mysql_real_escape_string($_POST['b_day']); $number = mysql_real_escape_string($_POST['number']); $height = mysql_real_escape_string($_POST['height']); $weight = mysql_real_escape_string($_POST['weight']); ・ ・ $query_reg = sprintf("INSERT INTO `member` (`id`,`password`,`first_name`,`last_name`,`first_kana`,`last_kana`,`b_year`,`b_month`,`b_day`,`number`,`height`,`weight`) VALUES('$id',$password,'$first_name','$last_name','$first_kana','$last_kana',$year,$month,$day,,$number,$height,$weight"); $result_reg = mysql_query($query_reg, $link) or die(mysql_error()); if ($result_reg) { $msg = '登録しました。'; } else { $msg = '登録に失敗しました。'; } ・ ・ ・ ?> <html><body><?php print $msg; ?></body></html> とフォームを入力してデータベースに登録をするという流れです。 ご質問ですが、フォームに項目を入力して登録するとデータベースに登録がされます。 しかし、数字のみ($number、$height、$weight)の場所を未入力にするとエラーが出力されます。 エラーは 「You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near」です。 MySQLは下記のように設定しています。 id varchar(20) None password varchar(255) None first_name varchar(8) NULL last_name varchar(8) NULL first_kana varchar(8) NULL last_kana varchar(8) NULL b_year int(4) NULL b_month int(2) NULL b_day int(2) NULL number varchar(2) NULL height varchar(3) NULL weight varchar(3) NULL 未入力でもエラーが表示されずデータベースに入力されたとこだけ登録されるようにするにはどうしたらよろしいのでしょうか? お分かりの方がいらっしゃいましたらご教授お願いいたします。

    • ベストアンサー
    • PHP
  • varchar型を主キーに…

    現在サーブレット/JSPを利用してDBにユーザアカウントを登録、削除、更新、一覧をできるようするシステムを作成しています。 テーブルを create table loginuser ( userId char(16) not null default '', passwd char(16) not null default '', name varchar(50) not null default '', accessFlg int(1) not null default '0', primary key(userId)); で作成しました。 IDが数字の時はDBに登録ができるのですがIDに文字を入力するとDBに登録されません。 主キーをvarchar型で使用するのは不可能なのでしょうか? ご返答をよろしくお願いします。