我正在努力将来自两个不同来源的数据输出到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
在页面下方正确显示。
我现在已经盯着这几个小时,似乎无法找到解决方案。任何帮助表示赞赏。
答案 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'");
}
祝你好运!!!