-2

フォームからデータを抽出し、そのデータをデータベースのテーブルに入力する演習を行っています。

フォームには合計 6 つのフィールドがありますが、最初の 3 つのフィールドのみがテーブルに登録されています。

表のデータ型

first_name  varchar(30)
last_name   varchar(30)
pd          varchar(10)
b_month     varchar(2)
b_day       varchar(2)
b_year      varchar(4)

フォームの HTML コード

    <form action="handle_reg2.php" method="post">
    <p>first name: <input type="text" name="first_name" size="20" /></p>
    <p>last name: <input type="text" name="last_name" size="20" /></p>
    <p>Password: <input type="password" name="pwd" size="10" /></p>
    <p>confirm password: <input type="password" name="confirm" size="10" /></p>
     <select name="month">
    <option value="">Month</option>
    <option value="1">January</option>
     </select> 
     <select name="day">
    <option value="">Day</option>
    <option value="1">1</option>
  </select>
  <input type="text" name="year" value="yyyy" size="4"/>
  </p>

フォームデータを処理する PHP コード

$db_connect = mysql_connect("localhost", "$db_user", "$db_pass");
 $sql = "insert into reg_data (first_name, last_name, pd, b_month, b_day, b_year) 
 values 
 ('$first_name', '$last_name', '$password', '$b_month',
 '$b_day', '$b_year')";

$insert_data = mysql_query ($sql, $db_connect );

私のコード フラグメントを見て、原因と問題の解決方法を教えてください。

4

1 に答える 1

0

変数の名前を変更しました... EG

$byear = $_POST['year'];

$b_year

編集:

Q を変更し、受信変数に $byear という名前を付けてから $b_year として参照しようとした方法を示すコードを削除しました。

命名規則に固執すれば、これらのばかげたエラーが少なくなります。フォームからデータベースへのEG:

<input type =text name="b_year" />

それから

$b_year = (int)$_POST['b_year'];

それから

"insert into mytable (b_year) values ($b_year )";

もちろん、誰もが言ったことをリストし、準備されたステートメントを使用しているか、データベースを保護する別の方法を見つけていることを除いて。

于 2013-02-11T14:07:44.303 に答える