0

MySQLテーブルを配列で更新する方法を見つけようとしています。

テーブルには 4 つのフィールドがあります。REGNO、BATCHNO、NAMES、および ATTEN_SUM。REGNOには独自の価値があります。

$i = 0;

while($row_recordset = mysql_fetch_array($query_run)) {

echo "<tr>";

echo "  <td>{$row_recordset['REGNO']}</td>
        <td>{$row_recordset['NAME']}</td>

        <td><input type='text' name='atten_ave".$i."'></td>

     ";

echo "</tr>";

$i++;

更新ページの後の前のページの html コードは次のとおりです。

foreach($_POST as $textbox => $values) {

$query_update = "UPDATE `grades` SET `ATTEN_SUM` = '$values' WHERE `BATCHNO` = '$sessionbatch'";
if(mysql_query($query_update)) {
     echo 'SUCCESS';
       } else{
       die(mysql_error());
              }
}

$_POST は、前のページからの動的入力からの配列です。これが私の出力の例です。

REGNO  |  BATCHNO       |   NAME       |    ATTEN_SUM
====================================================
  1    |  ARPA 00-055    |   Jason      |      99 
  2    |  ARPA 00-055    |   Mark       |      99 
  3    |  ARPA 00-055    |   Edgar      |      99

入力した最後の値ですべての行を更新します。

4

4 に答える 4

0

1)

mysql_* 関数はもう使用しないでください。それらは推奨されておらず、 mysql インジェクションの穴が残る可能性があります。MysqliまたはPDOの使用方法を学ぶ必要があります。

2)

あなたのコードは、あらゆる可能性のある mysql インジェクションに対して完全にオープンです。上記を使用mysql_real_escape_stringまたは参照する必要があります1)

3)

すべてのアイテムをforeach($_POST)繰り返し処理してい$_POSTます。HTMLフォームからデータを送信していると思います(間違っているかもしれません)。試してみるvar_dump($_POST)と、やりたいこととは関係のない多くの値があることがわかります。例えば:

<input type=”submit” value=”Some value” name="update">

PHPになります

echo $_POST["update"];
// result: Some value

の出力を投稿できればvar_dump($_POST)、foreach ループ内で何を渡しているかをすべて確認でき、おそらくより詳細な解決策を提供できます。

于 2013-04-29T02:57:11.193 に答える
0

あなたが言ったように、REGNO は一意のキーですが、出力によると、一意ではない BATCHNO を更新しています。

于 2013-04-29T02:43:59.057 に答える