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的答案中是不正确的。评论该答案而不是发布新答案将是正确的方式。