2016-11-14 137 views
0

我試圖將SELECT查詢的結果作爲隱藏的輸入元素傳遞給表單。實際上,我正在爲結果中的每一行創建一個表單。PHP:傳遞表格行作爲隱藏元素的形​​式

我知道可能會傳遞一個隱藏的數組在表單中,所以我認爲它也應該傳遞一行表。

這是代碼片段處理它:

$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 
) 

我的錯誤必須明顯,但我找不到它在哪裏。

+2

關鍵是'PDO :: FETCH_ASSOC' –

+1

默認情況下,你可以看一下這個(http://php.net/manual/en/mysqli-result.fetch-array.php)你同時提取數字和關聯 – cmorrissey

+0

是否有在動作腳本中獲取assoc數組索引作爲名字的一種方法?儘管我現在使用fetch(PDO :: FETCH_ASSOC),print_r()只顯示數字索引。 – rodrunner

回答

2

你明明使用PDO

而且你可以從manual看到 - PDO fetch方法將作爲第一個可選參數fetch_style

默認情況下它是PDO::FETCH_BOTH

返回由索引的數組兩列名和0索引的列數在你返回結果集

所以,你需要傳遞一個參數到fetch或者PDO::FETCH_ASSOC或者PDO::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.'">'; 
    } 

    // ... 
} 
+0

工作,但即使我使用PDO :: FETCH_ASSOC,操作腳本中的print_r($ _ POST ['row'])始終顯示數字索引。有沒有辦法使它與assoc索引一起工作(即$ _POST ['row'] ['id_producto']而不是$ _POST ['row'] [1])? – rodrunner

+0

當然,請參閱更新。 –