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
未入力でもエラーが表示されずデータベースに入力されたとこだけ登録されるようにするにはどうしたらよろしいのでしょうか?
お分かりの方がいらっしゃいましたらご教授お願いいたします。
お礼
もう少しらしいので勉強して分からなければまた質問します。 ありがとうございます。
補足
これでいいんですか?? 実行する毎にblobには0バイトでオートインデックスが増えていっています。$_FILES["upfile"]["tmp_name"]のtmp_nameは固定なのですか?