Php 在单个SQL数据库列中插入多个复选框值

Php 在单个SQL数据库列中插入多个复选框值,php,sql,insert,checkbox,multipleselection,Php,Sql,Insert,Checkbox,Multipleselection,我正在寻找一个简单的解决方案,将多个复选框选择插入到单个数据库列中。用户选择框1、4和6,这样数据库将反映“1、4、6”。。逗号很好,但不是必需的。如果选中一个复选框,则信息将按其应有的方式插入。如果选择了多个,则只将最后一个插入数据库。其他一切都很好,但这些该死的复选框。我试着用 <?php if(isset($_POST['mode'])) { $mode = implode(",", $_POST['mode']); } else { $mode = ""; }

我正在寻找一个简单的解决方案,将多个复选框选择插入到单个数据库列中。用户选择框1、4和6,这样数据库将反映“1、4、6”。。逗号很好,但不是必需的。如果选中一个复选框,则信息将按其应有的方式插入。如果选择了多个,则只将最后一个插入数据库。其他一切都很好,但这些该死的复选框。我试着用

<?php
if(isset($_POST['mode'])) {
    $mode = implode(",", $_POST['mode']);   
} else {
    $mode = "";
}
?>

<?php


您可以使用以下代码将复选框转换为字符串,其中所选框用逗号分隔

function checkboxToString($check){
    while (list ($key,$val) = @each ($check)) { 
        $string .= $val.",";
    }       
    return $string;
}
例如:选中框1,3和4时,它将返回1,3,4,。是的,它在结尾加了一个逗号。您可以使用一行简单的代码删除最后一个逗号(可能不是最好的)。只需在末尾添加以下内容:

$string = substr($string,0,strlen($string)-1);

这将删除字符串的最后一个字符。

您覆盖了正确的
$mode
变量,这就是您在表数据中看到
数组的原因

从代码中删除此行:

$mode=$_POST['mode'];
关于易受攻击:您应该以这种方式转义字符串:

$gamename = mysql_escape_string($_POST['gamename']);
$region = mysql_escape_string($_POST['region']);
$notes = mysql_escape_string($_POST['notes']);

请不要使用mysql_*函数,它已弃用(请参阅),易受sql注入攻击。使用SQL,或者您可以为SQL的新手详细说明一下吗?漏洞到底在哪里?在保持现有功能的同时,我可以用什么替换漏洞代码?如果您阅读我在评论中发布的链接,您所有的问题都会得到回答是的,我已经意识到这一点。谢谢你的指导。谢谢你提供的信息,我会在没有那一行的情况下尝试它,看看它给了我什么。删除那一行代码已经解决了这个问题。现在,在我的数据库的一列中正确显示了多个选择的复选框。我很高兴能帮助您buddythats这是一个不好的方法,以后将加入的数组()更好
$mode=$_POST['mode'];
$gamename = mysql_escape_string($_POST['gamename']);
$region = mysql_escape_string($_POST['region']);
$notes = mysql_escape_string($_POST['notes']);