在foreach循环内的变量前面的文本

时间:2010-07-03 10:52:20

标签: php sql mysql html

我已经设置了一个小脚本来处理我有三个复选框的页面。

复选框的HTML如下所示:

<input type="checkbox" value="Ex1" name="Check[]" />Ex1
<input type="checkbox" value="Ex2" name="Check[]" />Ex2
<input type="checkbox" value="Ex3" name="Check[]" />Ex3

这些的PHP脚本:

if($_POST['Check'] == true){
foreach($_POST['Check'] as $value){
$check_msg .= "$value";
}
}

现在,我想要做的是在我的数据库中插入“Ex1,Ex2”,如果选中“Ex1”和“Ex2”复选框。但问题是,如果我在“$ value”前加上“,”,它会将“,Ex1,Ex2”插入数据库。但正如我所说,我想在开头插入它而不用逗号和空格......我怎么能这样做?如果它是foreach循环或其他方法并不重要,因为我真的不知道检查哪些复选框被检查的任何其他方法。

我尝试了几种组合,但无法真正得到我想要的结果......

感谢。

2 个答案:

答案 0 :(得分:4)

您可以foreach使用implode进行此操作。如果未选中该复选框,则无论如何都不会在$_POST['Check']值中显示该值。

示例:

$csv = implode(', ', $_POST['Check']);

确保在将结果字符串插入数据库之前对其进行清理,以防止SQL注入。

答案 1 :(得分:0)

我总是使用以下代码执行该类型的操作;

foreach ( $_POST['Check'] as $key => $value ) {
  $check_msg .= ", {$value}";
}

$check_msg = substr($check_msg,2);

最后一行只是从你正在构建的字符串中删除“,”。每次要添加下一个项目时,比检查$ check_msg的现有值更简单,更容易[恕我直言]。