$ _POST []和mysql_fetch_arrays在一起

时间:2012-01-21 04:35:09

标签: php mysql arrays loops

我正在努力将来自两个不同来源的数据输出到HTML表格中。一个来源是mysql_fetch_array,另一个是$_POST数组。来自mysql的三个<td>表和一个来自$_POST的表通过while循环输出。为了在输出页面上关联数组,我计划通过行id将$_POST数据存储在表中,然后在页面的下方查询整行。

我遇到的问题是我似乎无法正确地将$_POST数组值更新到行中。 $_POST数组中的最后一个值是存储在所有选定字段中的所有值。

使用id [ ]unit_ass[ ]捕获输入页面数组,并将其传递到输出页面。

输出页面代码:

require_once ("../includes/db_connect.inc");

    $pid = array_filter($_POST['id']);
    $gid = implode(",", $pid);

    $sua = array_filter($_POST['unit_ass']);

    foreach($sua as $value) echo $value . "<br>"; // this outputs correct values in the correct order.

    foreach($sua as $value) mysql_query("UPDATE $tbl_name SET unit_ass='$value' WHERE id IN ( $gid )"); 

使用array_filter()剥离空键...当我回显第一个foreach语句中的值时,它们会以正确的顺序正确显示。

但是,只有$sua数组中的最后一个值正在更新由$ gid确定的表行。 foreach不会迭代数组值并按原样执行UPDATE。 id[ ]中的数据通过while循环中的mysql_fetch-array在页面下方正确显示。

我现在已经盯着这几个小时,似乎无法找到解决方案。任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:0)

foreach($sua as $key => $value){
    $value = mysql_escape_string($value);
    $id = mysql_escape_string ($pid[$key]);
    mysql_query("UPDATE $tbl_name SET unit_ass='$value' WHERE id='$id'");
}

答案 1 :(得分:-1)

嗯,我相信$gid = implode(",", $pid);会给出一个值(考虑为1

现在假设$sua = array_filter($_POST['unit_ass']);给你ABC, PQR, LMN

所以你的查询会像这样执行

 mysql_query("UPDATE $tbl_name SET unit_ass='ABC' WHERE id='1'");
 mysql_query("UPDATE $tbl_name SET unit_ass='PQR' WHERE id='1'");
 mysql_query("UPDATE $tbl_name SET unit_ass='LMN' WHERE id='1'");

因为你的$gid是完全相同的,所以你看到的只是最后一次更新...希望你犯了错误......

我相信你也想改变gid。对于那个检查@Bao Nhan的回答,这对你也有帮助!!!

更新:

使用以下代码......现在可以使用...

require_once ("../includes/db_connect.inc");

$sua = array_filter($_POST['unit_ass']);

 foreach($sua as $myKey => $value) {
     $myID = $pid[$myKey];
     mysql_query("UPDATE $tbl_name SET unit_ass='$value' WHERE id='$myID'");
 }

祝你好运!!!