我这里有一个绝对的初学者问题。我在将多个复选框条目放入数据库中的单个列时遇到问题。我用我的php尝试了一些不同的东西,但似乎无法正常工作。我尝试过使用序列化以及研究使用implode / explode。对不起,我基本上要求用勺子喂食,因为我知道这是一个简单的修复,我还没有能够得到任何工作。任何援助将不胜感激。谢谢!!!另外我有三个复选框是system,comm和其他,我确实有3个输入的括号,即使php还没有设置处理它们,所以现在我的DB仍然显示这些输入的数组。这是我的php
<?php
$con = mysql_connect("localhost","Andrew","password");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("mydb", $con);
$sql="INSERT INTO persons (firstname, lastname, modelid, system, department, comm, other, shift, comments)
VALUES
('$_POST[firstname]','$_POST[lastname]','$_POST[modelid]','$_POST[system]','$_POST[departme nt]','$_POST[comm]','$_POST[other]','$_POST[shift]','$_POST[comments]')";
if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
echo "1 record added";
mysql_close($con);
?>
答案 0 :(得分:0)
详细说明上述评论:
$to_insert_in_db = $_POST['system'].','.$_POST['comm'].','.$_POST['other'];
您可以将其插入数据库的单个列中,当您检索它时,您只需执行以下操作:
$retrieved_values = explode(',', $column_value_from_db);
但是,如果system,comm等的值有点复杂(比如字符串),我建议你使用json_encode将值添加到数据库中,使用json_decode从数据库中获取它们。
$values = array('system' => $_POST['system'], 'comm' => $_POST['comm'], 'other' => $_POST['other']);
$column_to_insert = json_encode($values);
$values = json_decode($column_value_from_the_database);
答案 1 :(得分:0)
Checkbox有一个独特的问题,即当检查时有一些值表单与数据一起发送,但是如果未选中则没有变量并且它将返回未定义的变量,因此每次使用每个复选框变量时都会执行此操作像这样
$check1Val = 0;
if(isset($_POST["check1"]){
$check1Val = 1;
//or $check1Val = $_POST["check1"];
}
最后,您将每个变量连接起来并将其发送到单个coloum
$allCheckValues = $check1Val.",".$check2Val;
如果您对复选框或其他
仍感到困惑,请与我们联系答案 2 :(得分:0)
试试这个
$value ="";
if(isset($checkbox1)){
$value = $value."1";
$flag =1;
}
if(isset($checkbox2)&&$flag==1){
$value = $value.",1";
$flag =1;
}
else{
$value = $value."0,1";
$flag =1;
}
if(isset($checkbox3)&&$flag==1){
$value = $value.",1";
$flag =1;
}
else{
$value = $value."0,0,1";
$flag =1;
}
您可以使用0或1的任何值,具体取决于您的应用程序
答案 3 :(得分:0)
这是一种干净的方式,不会产生undefined index/variable
通知(请记住,如果未选中复选框,则不会将其作为帖子值发送),并允许您添加更多复选框只需添加到$names
数组。
<?php
$names = array('system', 'comm', 'other');
$checkboxes = array();
foreach($names as $name)
{
$value = 0;
if(isset($_POST['checkboxes']) && is_array($_POST['checkboxes']) && in_array($name, $_POST['checkboxes']))
{
$value = 1;
}
$checkboxes[] = $value;
}
$checkboxString = implode(',', $checkboxes);
?>
现在,您可以在查询中使用$checkboxString
。 $checkboxString
将以逗号分隔的0或1列表来指示复选框值。例如:system = off,comm = on,other = on:0,1,1
。
您的HTML需要看起来像(使用复选框数组):
<input type="checkbox" name="checkboxes[]" value="system" /> System<br />
<input type="checkbox" name="checkboxes[]" value="comm" /> comm<br />
<input type="checkbox" name="checkboxes[]" value="other" /> other
^^ square brackets for an array
您需要对此进行研究,因为您的代码容易受到攻击。通过mysql_real_escape_string()
运行用户提供的值:
$firstname = mysql_real_escape_string($_POST['firstname']);
<强>查询:强>
VALUES
('$firstname', ..............
答案 4 :(得分:0)
所以这就是我用来将我的多个条目放入我的数据库中的单个单元格
('$_POST[firstname]','$_POST[lastname]','$_POST[modelid]','". implode(",", $_POST['system']) ."','$_POST[department]','". implode(",", $_POST['comm']) ."','". implode(",", $_POST['other']) ."','$_POST[shift]','$_POST[comments]')";
所以也许这将为将来尝试实现同样简单目标的人提供服务,现在我唯一的问题是数据库中的条目被切断,我相信解决方案是序列化我的数组。再次感谢您的所有帮助!!