0

フォームを使用してデータベースを更新しようとしています。データベース更新の問題は最後の行です。すべての行は最後の行によって更新されます。問題はどこだ?どうも

<?php if ((isset($_POST["MM_update"])) && ($_POST["MM_update"] == "form1")) {

$material = $_POST['material'];
$cena = $_POST['cena'];
$sql_material  = "UPDATE material_tab SET material=:material, cena=:cena WHERE zapotrzebowanie_id = $id";    
$statement_mat = $pdo->prepare($sql_material);
foreach ($material as $key => $value) {

    $statement_mat -> bindValue(':material', $material[$key], PDO::PARAM_STR);
    $statement_mat -> bindValue(':cena', $cena[$key], PDO::PARAM_STR);
    $statement_mat -> execute();

}

$statement_mat -> closeCursor(); } ?>

形:

<?php foreach ($rows_material as $material) { ?>
   <tr>
    <td><input type="checkbox" name="chk" /></td>
    <td><input type="text" name="material[]" class="big_field required" value="<?php echo $material['material']; ?>" /></td>
    <td><input type="text" name="cena[]" class="small_field" value="<?php echo $material['cena']; ?>" /></td>
   </tr>
<?php } ?>
4

1 に答える 1

1

あなたのSQLステートメントは、..「WHERE zapotrzebowanie_id = $id」を更新するように言っています。サンプル コードは $id の値を設定することも、フォームがその値を送信することもありません。フォームに表示されるレコードを更新するには、フォームに id を含める必要があります。そうしないと、MySQL は更新するレコードを認識できず、そのステートメントが実行されたときに zapotrzebowanie_id = $id を持つレコードを更新し続けます。

于 2012-05-17T22:19:33.743 に答える