アプリ版:「スタンプのみでお礼する」機能のリリースについて

以前もご質問させていただいたのですが、調べてもわからず困り果てています。
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

未入力でもエラーが表示されずデータベースに入力されたとこだけ登録されるようにするにはどうしたらよろしいのでしょうか?

お分かりの方がいらっしゃいましたらご教授お願いいたします。

A 回答 (1件)

> VALUES('$id',$password,'$first_name','$last_name','$first_kana','$last_kana',$year,$month,$day,,$number,$height,$weight");



最後の3個、varchar なのにクォートで囲んでないからだと思いますよ。
あと、最後だけダブルクォートだったり、カンマが二つ並んでたり。

この回答への補足

ご回答有難う御座います。

こちらの確認ミスで申し訳ありませんでした。

有難う御座います。

補足日時:2010/04/03 01:01
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!