foreach循环中变量前的文本

3

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

复选框的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个回答

4

您可以使用implode函数而不必使用foreach。如果复选框没有被勾选,那么在$_POST['Check']的值中根本不存在它的值。

示例:

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

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


抱歉,我对PHP脚本编写非常新手。嗯,我该如何“清理”它们? - Nisto
@Nisto 首先阅读SQL注入的维基百科文章以了解它是什么,然后在SO上查看如何对变量进行消毒 - Gordon

0

我通常使用以下代码执行此类型的操作;

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

$check_msg = substr($check_msg,2);

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


忘记我的方法吧!Gordon的方法更简洁 :) - Dave Rix
没问题,但你可以直接使用 trim($check_msg, ', ') 而不是 substr。另外,如果你没有使用 $key,就没有必要将其包含在内,也不需要在 $value 周围加上 {} - Gordon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接