【问题标题】:Text in front of variables inside a foreach loopforeach 循环中变量前面的文本
【发布时间】:2011-03-11 10:02:58
【问题描述】:

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

复选框的 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循环还是其他方法都没有关系,因为我真的不知道还有其他方法可以检查哪些复选框被选中了。

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

谢谢。

【问题讨论】:

    标签: php sql mysql html


    【解决方案1】:

    没有foreach 也可以使用implode。如果未选中该复选框,则无论如何$_POST['Check'] 值中将没有它的值。

    示例:

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

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

    【讨论】:

    【解决方案2】:

    我总是用下面的代码做那种动作;

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

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

    【讨论】:

    • 忘记我的方法!戈登的干净得多:)
    • 没关系,但您可以只使用trim($check_msg, ', ') 而不是substr。在另一个旁注中,如果您不使用$key,则无需包含它,并且您也不需要$value 周围的{}
    猜你喜欢
    • 2022-07-14
    • 2014-05-27
    • 1970-01-01
    • 1970-01-01
    • 2017-08-27
    • 1970-01-01
    • 2012-02-04
    • 2012-02-04
    相关资源
    最近更新 更多