如何更新多行

时间:2012-05-17 20:53:59

标签: mysql pdo

我正在尝试使用表单来更新数据库。数据库更新问题是最后一行。所有行都由最后一行更新。问题出在哪儿? THX

<?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 } ?>

1 个答案:

答案 0 :(得分:1)

您的SQL语句说要更新..“WHERE zapotrzebowanie_id = $ id”。您的示例代码从不设置$ id的值,您的表单也不会为其提交值。您需要在表单中包含id以更新该表单上显示的记录,否则MySQL不知道要更新哪个记录,并且在执行该语句时将继续更新碰巧具有zapotrzebowanie_id = $ id的记录。