0

ユーザーが必要な数の人を登録できる登録フォームがあります。たとえば、登録者が 1 人なのか 500 人なのか、前もってわかりません。したがって、サーバー側では、一度に 3 人が登録している場合、 および によって人のすべての名前にアクセスする必要があり$_POST['first0'] $_POST['first1']ます$_POST['first2']。これが私のデータベースクエリです。

    for ($i=0; $i < runners; $i++) {
        $query = "INSERT INTO ".$usertable." VALUES (".$_POST['first'.$i].", ".$_POST['last'.$i].", ".$_POST['age'.$i].",
        ".$_POST['gender'.$i].", ".$_POST['email'.$i]." , ".$_POST['phone'.$i]." , ".$_POST['address'.$i]." ,
        ".$_POST['city'.$i]." , ".$_POST['state'.$i]." , ".$_POST['zip'.$i]." , ".$_POST['type'.$i]." , ".$_POST['tshirt'.$i].")";

私のクエリが機能していないので、引用符とアポストロフィが間違っていることはわかっています。誰かがこれを達成する正しい方法を教えてくれます。どんな助けでも大歓迎です!

4

4 に答える 4

1

これを行うより良い方法は、user0、user1、user2、... を使用する代わりに、実際に html 入力テキストを配列として貼り付けることができます。例えば:

<!-- first user field -->
<input type="text" name="users[]" />
<!-- second user field -->
<input type="text" name="users[]" />
<!-- third user field -->
<input type="text" name="users[]" />

したがって、php は次のようになります。

$users = $_POST['users'];
foreach ($users as $user) {
    insertQuery = "INSERT INTO $userTable VALUES ('".mysqli_escape_string($user)."');
}

もちろん、上記のコードは 1 つの変数を使用した例にすぎず、他のすべての変数に適用できます。

乾杯。

于 2013-09-24T04:00:52.580 に答える
1

まず、データベースとの対話中に SQL インジェクションを防止する必要があります。

mysqli_real_escape_stringを使用します。これが更新されたクエリです。

 for ($i=0; $i < runners; $i++) {
         $firstname = mysqli_real_escape_string($_POST['first'.$i]);
         $lastname = mysqli_real_escape_string($_POST['last'.$i]);
         $age = mysqli_real_escape_string($_POST['age'.$i]);
         $gender = mysqli_real_escape_string($_POST['gender'.$i]);
         $email = mysqli_real_escape_string($_POST['email'.$i]);
         $phone = mysqli_real_escape_string($_POST['phone'.$i]);
         $address = mysqli_real_escape_string($_POST['address'.$i]);
         $city = mysqli_real_escape_string($_POST['city'.$i]);
         $state = mysqli_real_escape_string($_POST['state'.$i]);
         $zip= mysqli_real_escape_string($_POST['zip'.$i]);
         $type= mysqli_real_escape_string($_POST['type'.$i]);
         $tshirt= mysqli_real_escape_string($_POST['tshirt'.$i]);

        $query = "INSERT INTO ".$usertable." VALUES ('".$firstname."', '".$lastname ."', ".$age .",
       '".$gender ."', '".$email ."', ".$phone." , '".$address ."' ,
        '".$city."' , '".$state."' , ".$zip." , '".$type."' , '".$tshirt."')";
于 2013-09-24T04:37:14.790 に答える