使用php更新MySQL表数组不起作用

时间:2014-08-03 15:04:19

标签: php mysql arrays

嘿伙计我需要你的帮助,我有这个表FIDDLE在td中的输入,你可以看到相同的名字,我想更新一些表但是不行,这是我的代码:

$CA_id = $_POST['CA_id'];   

$i = 1;
while (isset($_POST["item_id$i"])) {
    $item_id = $_POST["item_id$i"];
    $j = 1;
    while (isset($_POST["item_Cant$i$j"])) {

        $item_Cant = intval($_POST["item_Cant$i$j"]);
        $CECO_cod = intval($_POST["CECO_cod$i$j"]);
        $item_desc = mysql_real_escape_string($_POST["item_desc$i$j"]);
        $item_enduser = mysql_real_escape_string($_POST["item_enduser$i$j"]);

        $query = "
            UPDATE
                items
            SET  
                item_Cant = '$item_Cant',
                CECO_cod = '$CECO_cod',
                item_desc = '$item_desc',
                item_enduser = '$item_enduser' 
            WHERE 
                CA_id = $CA_id
                AND item_id = $item_id
        ";

        mysql_query($query) or die(mysql_error());
        $j++;
    }
    $i++;
}   

我希望你明白,你可以帮我修改我的代码,谢谢。

解决方案:

我只是改变了

      echo "\t\t<tr class=\"row$r\">
                    <td><input readonly name= 'item_id".$a."' value='".htmlentities($row['item_id'])."'/></td>
                    <td><input name= 'item_Cant".$a."1' value='".htmlentities($row['item_Cant'])."'/></td>
                    <td><input name= 'CECO_cod".$a."2' value='".htmlentities($row['CECO_cod'])."'/></td>
                    <td><input name= 'item_desc".$a."3' value='".$row['item_desc']."'/></td>
                    <td><input name= 'item_enduser".$a."4' value='".$row['item_enduser']."'/></td>
                </tr>\n";

为此:

      echo "\t\t<tr class=\"row$r\">
                    <td><input readonly name= 'item_id".$a."' value='".htmlentities($row['item_id'])."'/></td>
                    <td><input name= 'item_Cant".$a."1' value='".htmlentities($row['item_Cant'])."'/></td>
                    <td><input name= 'CECO_cod".$a."1' value='".htmlentities($row['CECO_cod'])."'/></td>
                    <td><input name= 'item_desc".$a."1' value='".$row['item_desc']."'/></td>
                    <td><input name= 'item_enduser".$a."1' value='".$row['item_enduser']."'/></td>
                </tr>\n";

现在就像一个魅力!谢谢大家!

1 个答案:

答案 0 :(得分:0)

你让生活变得非常困难。

如果使用Field数组创建表单,请执行以下操作: -

<table width="400" border="1">
  <tbody>
    <tr>
      <td><input type="text" value="" name="item_id[]"></td>
      <td><input type="text" value="" name="item_Cant[]"></td>
      <td><input type="text" value="" name="CECO_cod[]"></td>
      <td><input type="text" value="" name="item_desc[]"></td>
      <td><input type="text" value="" name="item_enduser[]"></td>
    </tr>
    <tr>
      <td><input type="text" value="" name="item_id[]"></td>
      <td><input type="text" value="" name="item_Cant[]"></td>
      <td><input type="text" value="" name="CECO_cod[]"></td>
      <td><input type="text" value="" name="item_desc[]"></td>
      <td><input type="text" value="" name="item_enduser[]"></td>
    </tr>
    <tr>
      <td><input type="text" value="" name="item_id[]"></td>
      <td><input type="text" value="" name="item_Cant[]"></td>
      <td><input type="text" value="" name="CECO_cod[]"></td>
      <td><input type="text" value="" name="item_desc[]"></td>
      <td><input type="text" value="" name="item_enduser[]"></td>
    </tr>
    <tr>
      <td><input type="text" value="" name="item_id[]"></td>
      <td><input type="text" value="" name="item_Cant[]"></td>
      <td><input type="text" value="" name="CECO_cod[]"></td>
      <td><input type="text" value="" name="item_desc[]"></td>
      <td><input type="text" value="" name="item_enduser[]"></td>
    </tr>
    <tr>
      <td><input type="text" value="" name="item_id[]"></td>
      <td><input type="text" value="" name="item_Cant[]"></td>
      <td><input type="text" value="" name="CECO_cod[]"></td>
      <td><input type="text" value="" name="item_desc[]"></td>
      <td><input type="text" value="" name="item_enduser[]"></td>
    </tr>
    <tr>
      <td><input type="text" value="" name="item_id[]"></td>
      <td><input type="text" value="" name="item_Cant[]"></td>
      <td><input type="text" value="" name="CECO_cod[]"></td>
      <td><input type="text" value="" name="item_desc[]"></td>
      <td><input type="text" value="" name="item_enduser[]"></td>
    </tr>
  </tbody>
</table>

这有很多好处,你可以在数组上foreach,你不需要使用复杂的2级for循环,如果你想添加一行简单等等。

所以现在你的代码看起来像这样: -

$CA_id = $_POST['CA_id'];   

foreach( $_POST['item_id'] as $idx => $item_id ) {
    if ( isset($_POST['item_Cant'][$idx]) ) {

        $item_Cant = intval($_POST["item_Cant"][$idx]);
        $CECO_cod = intval($_POST["CECO_cod"][$idx]);
        $item_desc = mysql_real_escape_string($_POST["item_desc"][$idx]);
        $item_enduser = mysql_real_escape_string($_POST["item_enduser"][$idx]);

        $query = "
        UPDATE
            items
        SET  
            item_Cant = '$item_Cant',
            CECO_cod = '$CECO_cod',
            item_desc = '$item_desc',
            item_enduser = '$item_enduser' 
        WHERE 
            CA_id = $CA_id
            AND item_id = $item_id
        ";

        $result = mysql_query($query);
        if ( ! $result ) {
            // then you have an error, report it somehow
            echo 'UPDATE FAILED: ';
            echo 'Error code: ' . mysql_errno(); . ' Error Desc : ' . mysql_error() . '<br>';
            echo $query . '<br>';
     }
 }

PS:您应该使用mysqli_ *或PDO扩展而不是mysql_ *扩展,因为它们已被弃用,并且很快就会从PHP中删除。