关于UPDATE查询。为什么我的方法用相同的数据更新所有记录?

时间:2015-08-22 04:00:01

标签: php mysql arrays sql-update multiple-tables

我的方法是它的工作,但它用相同的数据更新所有表。当您更新第1行时,它将更新所有行。

          <?php
    $result = $db->prepare("SELECT * FROM famcomp WHERE app_id='".$_GET["app_id"]."'");
    $result->execute();
    for($i=0; $row = $result->fetch(); $i++){
  ?>
            <td><input type="text" name="app_id[]" value="<?php echo $row['app_id']; ?>" /></td>
            <td><input type="text" name="fullname[]" value="<?php echo $row['fullname']; ?>" class="input" /></td>
            <td><input type="text" name="fage[]" value="<?php echo $row['fage']; ?>" class="input" /></td>
            <td><input type="text" name="frel[]" value="<?php echo $row['frel']; ?>" class="input" /></td>
            <td><input type="text" name="fcivil[]" value="<?php echo $row['fcivil']; ?>" class="input" /></td>
            <td><input type="text" name="fedu[]" value="<?php echo $row['fedu']; ?>" class="input" /></td>
            <td><input type="text" name="foccup[]" value="<?php echo $row['foccup']; ?>" class="input" /></td>
            <td><input type="text" name="finco[]" value="<?php echo $row['finco']; ?>" class="input" /></td>
        </tr>    
        <?php
            }
        ?>

这是我的方法:$ N是计算fullname的总行,然后在for循环中使用它,当我回显我的更新时,它确实提供了正确的详细信息。但是当我查询它时,会用相同的数据更新所有行。

$N = count($_POST['fullname']);
for($i=0; $i < $N; $i++) {
  mysql_query("UPDATE famcomp set fullname='" . $_POST["fullname"][$i] . "', fage='" . $_POST["fage"][$i] . "', frel='" . $_POST["frel"][$i] . "', fcivil='" . $_POST["fcivil"][$i] . "', fedu='" . $_POST["fedu"][$i] . "', foccup='" . $_POST["foccup"][$i] . "', finco='" . $_POST["finco"][$i] . "' WHERE app_id='" . $_POST["app_id"][$i] . "'");

1 个答案:

答案 0 :(得分:-2)

该方法的解决方案:

 mysql_query("UPDATE famcomp set app_id ='". $_POST['app_id'][$i]. "', fullname='" . $_POST["fullname"][$i] . "', fage='" . $_POST["fage"][$i] . "', frel='" . $_POST["frel"][$i] . "', fcivil='" . $_POST["fcivil"][$i] . "', fedu='" . $_POST["fedu"][$i] . "', foccup='" . $_POST["foccup"][$i] . "', finco='" . $_POST["finco"][$i] . "' WHERE id ='" . $_POST["id"][$i] . "'");