2

私は他の同様の質問をスキャンしてきましたが、運がないだけです。

これが私の既存のページです: http: //excelwrestling.com/dual.php

Webページで、下の3行がフォーム上で同じであることがわかりますが、各行には固有の情報があります。ユーザーに各ボックスを選択してもらい、送信を押すと、すべての情報がデータベースに送信され、各行が一意になります。

Here a sample of my html:

    <select name="Weight">

<option value="Weight">Weight:</option>
    <option value="100">100</option>
        <option value="105">105</option>
        <option value="115">115</option>
        <option value="125">125</option>
        <option value="135">135</option>
        <option value="145">145</option>
        <option value="152">152</option>
        <option value="160">160</option>
        <option value="175">175</option>
        <option value="195">195</option>
        <option value="HWT">HWT</option>
        </select>
</select>

Here is the action file:

// Get values from form 
$Pool=$_POST['Pool'];
$Round=$_POST['Round'];
$Team_1=$_POST['Team_1'];
$Team_2=$_POST['Team_2'];
$Mat=$_POST['Mat'];
$Name_1=$_POST['Name_1'];
$Name_2=$_POST['Name_2'];
$Score=$_POST['Score'];
$Winner=$_POST['Winner'];
$Finished=$_POST['Finished'];


// Insert data into mysql 
$sql="INSERT INTO $tbl_name(Pool, Round, Team_1, Team_2, Mat, Weight, Name_1, Name_2, Score, Winner, Finished)

VALUES('$Pool','$Round','$Team_1','$Team_2','$Mat','$Weight','$Name_1','$Name_2','$Score','$Winner','$Finished')"

. implode ('$Pool','$Round','$Team_1','$Team_2','$Mat','$Weight','$Name_1','$Name_2','$Score','$Winner','$Finished',$query_row);
4

3 に答える 3

0

すべてのレコードを一度に挿入しようとしないでください。ループを使用してレコードを挿入するか、foreachステートメントを使用して一度に1つのレコードを挿入してください。

その後、これはあなたの問題を解決します。

于 2012-06-09T18:59:38.097 に答える
0

まず、複数の値を送信するには、フォーム要素に一意の名前を作成する必要があります。例えば:

<option value="Weight_1">Weight:</option>
...
<option value="Weight_2">Weight:</option>
...
<option value="Weight_3">Weight:</option>

「アクション」ファイルでは、これらの新しい変数を参照する必要があります(また、technoTarekが言うように、テーブルに挿入する前に、ユーザーが投稿したデータをサニタイズする必要があります)。

$Weight_1=mysql_real_escape_string($_POST['Weight_1']);
$Weight_2=mysql_real_escape_string($_POST['Weight_2']);
$Weight_3=mysql_real_escape_string($_POST['Weight_3']);
...

次に、同じテーブルに複数の挿入を行うには、レコードをコンマで区切るだけです。

$sql="INSERT INTO $tbl_name
(Pool, Round, Team_1, Team_2, Mat, Weight, Name_1, Name_2, Score, Winner, Finished)
VALUES
('$Pool','$Round','$Team_1','$Team_2','$Mat','$Weight_1','$Name_1_1','$Name_2_1','$Score_1','$Winner_1','$Finished_1'),
('$Pool','$Round','$Team_1','$Team_2','$Mat','$Weight_2','$Name_1_2','$Name_2_2','$Score_2','$Winner_2','$Finished_2'),
('$Pool','$Round','$Team_1','$Team_2','$Mat','$Weight_3','$Name_1_3','$Name_2_3','$Score_3','$Winner_3','$Finished_3');"
于 2012-06-09T19:18:07.293 に答える
0

私は通常、@ mmxxiiiによって提供される回答をサポートしますが、非常に重要な1つのステップを含める必要があります。データを入力するのは自分である場合でも、データベースに挿入する前に、常にデータが安全であることを確認する必要があります。

文字列値に対してmysql_real_escape_string()を使用するか、型キャストを強制する(たとえば、整数値を整数にする)ことにより、データをサニタイズします。

// Get values from form 
$Pool=mysql_real_escape_string($_POST['Pool']);
$Round=(int)$_POST['Round'];
$Team_1=(int)$_POST['Team_1'];
$Team_2=(int)$_POST['Team_2'];
$Mat=(int)$_POST['Mat'];
$Name_1=mysql_real_escape_string($_POST['Name_1']);
$Name_2=mysql_real_escape_string($_POST['Name_2']);
$Score=mysql_real_escape_string($_POST['Score']);
$Winner=mysql_real_escape_string($_POST['Winner']);
$Finished=mysql_real_escape_string($_POST['Finished']);
于 2012-06-09T20:21:09.850 に答える