使用带有数据库行的$ _POST数组

时间:2015-09-28 19:44:47

标签: php mysql arrays pdo

如何为每个数据库行添加$_POST数组(每个项目)?我有一个包含各种字段的字段,但用户中只有一个可以更改,在这种情况下是数量。

此字段中的行与PHP文件中使用的行(已订购)完全相同。

我已使用$_POST数组,如下所示:<input type="text" name = "quantity[]">

现在,我希望在PHP端显示与用户显示相同的信息(相同的行)。

我有

if (is_array($_POST['quantity']) || is_object($_POST['quantity'])) {
     foreach($_POST['quantity']as $key=>$value) {
           $sqlquery = "SELECT * FROM info WHERE user_id = " . $user_id . " ORDER BY name ASC";
          foreach($dbq->query($sqlquery) as $row) {
               $message .= $row['name'] . $row['description'] . $row['amount'] . $value;
                echo $message;
           }
     }
}

现在整个过程按预期工作,期望它循环两次。因此,每行显示两次,并且其中一半的行数量不正确。如果我有两行,它将回显四行,其中只有两行具有正确的数量,另外两行将交换数量值。

Problem in question

如该图所示,您可以看到最后一个值(2,2,15,15),这些值不代表正确的行。正确的顺序应该是(2,15,2,15),因为行循环两次 - 当然不是这样。

1 个答案:

答案 0 :(得分:2)

更改您的表单,以便quantity字段如下所示:

<input type="text" name="quantity[<?php echo $row['info_id']; ?>]">

info_id替换为引用表单中显示的项目的数据库列的实际名称。然后,当您处理表单时,您可以使用

if (is_array($_POST['quantity'])) {
    foreach($_POST['quantity']as $key=>$value) {
        $sqlquery = "SELECT * FROM info WHERE user_id = " . $user_id . " AND id = " . $key . " ORDER BY name ASC";
        $row = $dbq->query($sqlquery);
        $message .= $row['name'] . $row['description'] . $row['amount'] . $value;
        echo $message;
    }
}

我不确定您是否确实需要user_id查询中的SELECT测试,id条件可能就足够了。但这取决于数据库的细节。