Php 将复选框条目插入数据库

Php 将复选框条目插入数据库,php,session,checkbox,Php,Session,Checkbox,我有带有姓名状态的复选框。我就是这样做的: $_SESSION['statuses'] = mysql_real_escape_string($_POST['statuses']); $insert = "INSERT INTO submitted (statuses) VALUES ('".$_SESSION['statuses']."')"; $query = mysql_query($insert) or die ("Error: ".mysql_error(

我有带有姓名状态的复选框。我就是这样做的:

   $_SESSION['statuses'] = mysql_real_escape_string($_POST['statuses']);
   $insert = "INSERT INTO submitted (statuses) 
   VALUES ('".$_SESSION['statuses']."')";

   $query = mysql_query($insert) or die ("Error: ".mysql_error());
当我插入时,我就是这样做的:

   $_SESSION['statuses'] = mysql_real_escape_string($_POST['statuses']);
   $insert = "INSERT INTO submitted (statuses) 
   VALUES ('".$_SESSION['statuses']."')";

   $query = mysql_query($insert) or die ("Error: ".mysql_error());
问题是并没有被选中的内容被插入到数据库中,那个么如何插入选中的条目呢

新增/更新:

这是复选框窗体的外观:

                    <input type="checkbox" name="statuses" value="something">
        <input type="checkbox" name="statuses" value="something">
        <input type="checkbox" name="statuses" value="something">
        <input type="checkbox" name="statuses" value="something">
        <input type="checkbox" name="statuses" value="something">
        <input type="checkbox" name="statuses" value="something">

问题可能在于您为表单编写的标记。下面是一个例子:

<form action="checkbox-form.php" method="post">
Select your options<br />
<input type="checkbox" name="options[]" value="A" />A<br />
<input type="checkbox" name="options[]" value="B" />B<br />
<input type="checkbox" name="options[]" value="C" />C<br />
<input type="submit" name="formSubmit" value="Submit" />
</form>
然后应该得到一个包含所有选中值的数组

然后,您可以执行以下操作:

foreach($_POST['options'] as &$option){
   mysql_real_escape_string($option);
}
然后在数据库中插入:

   $insert = "INSERT INTO submitted (statuses)       
   VALUES ('". implode(",", $_POST['options']) ."')";      

   $query = mysql_query($insert) or die ("Error: ".mysql_error());
更新: 在表单的每一页上都应该有类似于转义值并将其保存到会话的内容。然后将每个页面的值保存到用户会话:

//Page 1
foreach($_POST['options'] as $option){
     $_SESSION['options'][] = mysql_real_escape_string($option);
}

//page 2
$_SESSION['SOME_OTHER_VALUE_FROM_TEXT_BOX'] = mysql_real_escape_string($_POST['SOME_OTHER_VALUE_FROM_TEXT_BOX');

//Final page:
//Everything is now stored in SESSION, so you can use them there:
//For example, display the value of options:
var_dump($_SESSION['options']); //etc

//So here, you would just run your sql queries to insert the appropriate data into your databse.

可能问题在于您为表单编写的标记。下面是一个例子:

<form action="checkbox-form.php" method="post">
Select your options<br />
<input type="checkbox" name="options[]" value="A" />A<br />
<input type="checkbox" name="options[]" value="B" />B<br />
<input type="checkbox" name="options[]" value="C" />C<br />
<input type="submit" name="formSubmit" value="Submit" />
</form>
然后应该得到一个包含所有选中值的数组

然后,您可以执行以下操作:

foreach($_POST['options'] as &$option){
   mysql_real_escape_string($option);
}
然后在数据库中插入:

   $insert = "INSERT INTO submitted (statuses)       
   VALUES ('". implode(",", $_POST['options']) ."')";      

   $query = mysql_query($insert) or die ("Error: ".mysql_error());
更新: 在表单的每一页上都应该有类似于转义值并将其保存到会话的内容。然后将每个页面的值保存到用户会话:

//Page 1
foreach($_POST['options'] as $option){
     $_SESSION['options'][] = mysql_real_escape_string($option);
}

//page 2
$_SESSION['SOME_OTHER_VALUE_FROM_TEXT_BOX'] = mysql_real_escape_string($_POST['SOME_OTHER_VALUE_FROM_TEXT_BOX');

//Final page:
//Everything is now stored in SESSION, so you can use them there:
//For example, display the value of options:
var_dump($_SESSION['options']); //etc

//So here, you would just run your sql queries to insert the appropriate data into your databse.

这是我在插入数据库时用于复选框的内容

function validateCheckBox($name) {
    if (isset($_POST[$name]) && !empty($_POST[$name]) && $_POST[$name] === 'on') {
        return 1;
    }else{
        return 0;
    }
}

这是我在插入数据库时用于复选框的内容

function validateCheckBox($name) {
    if (isset($_POST[$name]) && !empty($_POST[$name]) && $_POST[$name] === 'on') {
        return 1;
    }else{
        return 0;
    }
}

不知道你是刚打出来还是根本不知道它在那里

$_SESSION['SOME_OTHER_VALUE_FROM_TEXT_BOX'] = mysql_real_escape_string($_PSOT['SOME_OTHER_VALUE_FROM_TEXT_BOX');
应该是

$_SESSION['SOME_OTHER_VALUE_FROM_TEXT_BOX'] = mysql_real_escape_string($_POST['SOME_OTHER_VALUE_FROM_TEXT_BOX');

不知道你是刚打出来还是根本不知道它在那里

$_SESSION['SOME_OTHER_VALUE_FROM_TEXT_BOX'] = mysql_real_escape_string($_PSOT['SOME_OTHER_VALUE_FROM_TEXT_BOX');
应该是

$_SESSION['SOME_OTHER_VALUE_FROM_TEXT_BOX'] = mysql_real_escape_string($_POST['SOME_OTHER_VALUE_FROM_TEXT_BOX');


为什么要使用
会话
变量来执行此操作?什么是
$\u POST['status']
?这是一个一对一的值吗?这是一个5页的表单,所以我使用会话$_POST[‘状态’];用于复选框。所以它是向导的一部分。
name=“statuses[]”
是您试图插入的值,实际上是字符串还是其他类型的值(数组等)?您的标记看起来像什么?为什么要使用
会话
变量来执行此操作?什么是
$\u POST['status']
?这是一个一对一的值吗?这是一个5页的表单,所以我使用会话$_POST[‘状态’];用于复选框。所以它是向导的一部分。
name=“statuses[]”
是您试图插入的值,实际上是字符串还是其他类型的值(数组等)?您的标记是什么样子的?好的,当我使用var\u dump时,值会显示在下一页上。任何防止向用户显示帽子的方法。'var_dump'打印出值供您查看。这用于调试目的。只需删除var_转储行,您就可以了。好的,有一个问题,如果我选择了所有选项,大约有20个,那么它会给我一个语法检查错误,但我找不到任何错误。错误应该会告诉您是哪一行导致了问题。您可以发布导致错误的代码行吗?@Humphrey:我建议在PDO中使用参数化查询,而不是转义。:)好的,当我使用var_dump时,值会显示在下一页上。任何防止向用户显示帽子的方法。'var_dump'打印出值供您查看。这用于调试目的。只需删除var_转储行,您就可以了。好的,有一个问题,如果我选择了所有选项,大约有20个,那么它会给我一个语法检查错误,但我找不到任何错误。错误应该会告诉您是哪一行导致了问题。您可以发布导致错误的代码行吗?@Humphrey:我建议在PDO中使用参数化查询,而不是转义。:)在问题中它是正确的,在F21的回答中它是不正确的。评论该答案而不是发布新答案将是正确的方式。在问题中是正确的,在F21的答案中是不正确的。评论该答案而不是发布新答案将是正确的方式。