PHP:将表格行作为表单中的隐藏元素传递

罗德纳

我试图将SELECT查询的结果作为表单中的隐藏输入元素传递。实际上,我正在为结果中的每一行创建一个表单。

我知道可以通过表单传递隐藏数组,因此我认为它也可以通过表的一行来工作。

这是处理它的代码的片段:

$res = $conn->query($query);
while($row = $res->fetch()) {

    echo '<form action="action.php" method="post">';

    foreach ($row as $element) {
        echo '<input type="hidden" name="row[]" value="'.$element.'">';
    }

    echo '<input type="submit" name="delete" value="Delete">';
    echo "</form>";
}

现在,action.php脚本仅打印接收到的行:

<?php
    echo "<pre>"; print_r($_POST['row']); echo "</pre>";
?>

在mysql中查询的结果是

+--------+-------------+-----------+----------+------------+
| numero | id_producto | id_tienda | cantidad | f_pedido   |
+--------+-------------+-----------+----------+------------+
|      7 | IXUS115HSAZ |         3 |        2 | 2015-10-01 |
+--------+-------------+-----------+----------+------------+
1 row in set (0.01 sec)

但是action.php中该行的print_r将每个字段加倍:

Array
(
    [0] => 7
    [1] => 7
    [2] => IXUS115HSAZ
    [3] => IXUS115HSAZ
    [4] => 3
    [5] => 3
    [6] => 2
    [7] => 2
    [8] => 2015-10-01
    [9] => 2015-10-01
)

我的错误一定很明显,但我找不到它的位置。

u_mulder

你显然使用 PDO

正如您从手册中看到的那样,PDOfetch方法将第一个可选参数a用作参数fetch_style

默认情况下它是PDO::FETCH_BOTH哪个

返回一个由列名和索引0的列号索引的数组,该数组在结果集中返回

所以,你需要一个参数传递给fetch任一PDO::FETCH_ASSOCPDO::FETCH_NUM

while($row = $res->fetch(PDO::FETCH_ASSOC)) {

    // ... 

    // use `$field_name` to use  database field name
    foreach ($row as $field_name => $element) {
        echo '<input type="hidden" name="row[' . $field_name . ']" value="'.$element.'">';
    }

    // ...
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章