我有多个数组,我将其传递给表单提交操作上的文件sales_process.php。这些数组的名称如下:boards1 = {a,b,c},boards2 = {b,c,d},boards3 = {a,c,d}。 。等等(值不是a,b,c,d)。我正在通过我的表单中的多个“多个选择框”传递它们,其中a,b,c,d是我的多个选择选项:
for ($count=1;$count<10;$count++)
echo "<td>"."<select name='boards".$count."[]' multiple='multiple'>".showOptionsDrop($boards,$arr)."</select></td>";
现在,当我将它们传递给文件sales_process.php时,我想使用implode函数将这些数组转换为字符串,以便我可以将它们存储到我的“学校”表中。在sales_process.php文件中,我这样做:
for ($i=0;$i<$count;$i++) {
$board = implode(',',${'boards'.$i});
$query = "UPDATE schools SET board = '$board' where schoolcode = (some_no)";
$result = mysql_query($query) or die("Error in updating table :".mysql_error());
}
所以这样,每次我的循环运行时,boardsX的值都会被转换成字符串并存储在表中,其中X是1,2,3 ......等等。
问题是内爆功能不起作用并给出错误:
Warning: implode() [function.implode]: Invalid arguments passed in C:\xampp\htdocs\relationshipReport\sales_process.php on line 18
现在如果你说变量${'boards'.$i}
不是一个数组,我就这样做了,发现它只给了我一个数组:
$i=1;
var_dump(${'boards'.$i});
print_r(${'boards'.$i});
将输出显示为:
array(3) { [0]=> string(4) "CBSE" [1]=> string(4) "ICSE" [2]=> string(5) "IGCSE" }
Array ( [0] => CBSE [1] => ICSE [2] => IGCSE )
我希望我的问题很明确。请帮我找出内爆功能出错的方法。如果您不理解这个问题,请提及。
答案 0 :(得分:2)
从您的示例中,我相信这是您当前的代码:
for ($i=0;$i<$count;$i++) {
$board = implode(',',${'boards'.$i});
$query = "UPDATE schools SET board = '$board' where schoolcode = (some_no)";
$result = mysql_query($query) or die("Error in updating table :".mysql_error());
}
如果是这样,请尝试更改它,使其如下所示:
for ($i=0;$i<$count;$i++) {
if(isset($_POST['boards'.$i]))
{
$board = mysql_real_escape_string(implode(',',$_POST['boards'.$i]));
$query = "UPDATE schools SET board = '$board' where schoolcode = (some_no)";
$result = mysql_query($query) or die("Error in updating table :".mysql_error());
}
else
{
echo '$_POST[\'boards' . $i . '\'] doesn\'t exist or is null.<br>';
}
}
这包含if
条件,检查数组条目是否确实存在。如果确实存在,则运行查询。如果它没有,它echo
会回复一条消息,告诉你哪一个不存在。
即使您已经使用Javascript确认了前端,也应该在运行代码之前检查,以确保它不会破坏它。您永远不会太安全,特别是如果您的代码包含敏感信息。
试试这个,让我知道你是怎么做的。
答案 1 :(得分:1)
假设${'boards'.$i}
来自$_POST['boards'.$i]
。 (如果没有,您使用的是register_globals
,但这并不好。)
对于多项选择,如果未选择任何选项,则$_POST['boards'.$i]
将为您提供null
而不是数组。