
以前もご質問させていただいたのですが、調べてもわからず困り果てています。
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
未入力でもエラーが表示されずデータベースに入力されたとこだけ登録されるようにするにはどうしたらよろしいのでしょうか?
お分かりの方がいらっしゃいましたらご教授お願いいたします。
No.1ベストアンサー
- 回答日時:
> VALUES('$id',$password,'$first_name','$last_name','$first_kana','$last_kana',$year,$month,$day,,$number,$height,$weight");
最後の3個、varchar なのにクォートで囲んでないからだと思いますよ。
あと、最後だけダブルクォートだったり、カンマが二つ並んでたり。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PHP等を用いて在庫数を表示・管...
-
VBA で、スペースを含むファイ...
-
セッションにIDを振って値を代入
-
処理後のページ内移動について
-
DBの値をチェックボックスに反...
-
フォームへの前回入力値をクリ...
-
PHPでじゃんけん勝負
-
文字列(×と÷)の文字化けについて
-
フォーム送信後の更新ボタンで...
-
php or条件検索結果と入力した...
-
同じページでフォームデータを...
-
GETとPOST以外のデータの渡し方...
-
リンク先のフォームに自動的に...
-
POSTを使わずに値を渡す方法
-
チェックボックスのうちひとつ...
-
PHPの初心者です。現在チェック...
-
PHPでフォームに表示させたCSV...
-
現在ラジオボタンのデータベー...
-
PHPエラー 教えて下さい
-
プルダウンリンクを外部ファイ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
php+mysqlでの重複チェックにつ...
-
Flaskでサーバー立ち上げに関して
-
POSTの項目に追加
-
重複を防ぐ記述について教えて...
-
複数条件での検索について教え...
-
アップロードファイル名の文字化け
-
サブフォルダ内の全てのテキス...
-
php、sqlite3にデーター追加で...
-
phpで変数を使ってcopyできない
-
配列について教えて下さい。
-
$_SESSIONに渡した後はそのまま...
-
phpで掲示板を作りたい
-
JSONデータ登録について
-
$_REQUESTの意味を教えて下さい
-
空文字
-
PHP等を用いて在庫数を表示・管...
-
Fortranでのファイル名操作につ...
-
VBA で、スペースを含むファイ...
-
header()関数について
-
PHPでParse errorについて
おすすめ情報