要在数据库中发布的多个复选框

时间:2013-06-24 10:21:35

标签: php sql checkbox

我创建了一个包含多个复选框的html页面。

<input type="checkbox" name="option_one" value="YES" class='checkbox_divs' >Option one<br>
<input type="checkbox" name="option_two" value="YES" class='checkbox_divs' >Option two<br>
<input type="checkbox" name="option_three" value="YES" class='checkbox_divs' >Option Three<br>

用户提交它并调用php页面以这种方式将其发送到SQL数据库:

$strSQL = "INSERT INTO CLDETAILS (option_one, option_two, option_three)
VALUES
('$_POST[option_one]','$_POST[option_two]','$_POST[option_three]')";   
if (sqlsrv_query($conn,$strSQL))
  {
    echo "Saved !";
  }
else  
{  
  echo "Error Save [".$strSQL."]";
  print_r( sqlsrv_errors());
}  
?>

一切正常,只是我想要改进我的代码并避免出现“通知:未定义的索引:......”之类的错误。 我知道我应该使用“isset”但我在PHP中开始,我真的不知道应该如何使用它。 谢谢你的帮助。

4 个答案:

答案 0 :(得分:0)

你可以像这样使用它

if(!isset($_POST['option_one'])) 
    $_POST['option_one'] = 'NO';

还要确保在将数据插入数据库之前解析数据以避免sql注入,我建议你使用mysqli或pdo

答案 1 :(得分:0)

试试这个,

$opt1 = isset($_POST[option_one]) ? $_POST[option_one] : 'NO';
$opt2 = isset($_POST[option_two]) ? $_POST[option_two] : 'NO';
$opt3 = isset($_POST[option_three]) ? $_POST[option_three] : 'NO';
$strSQL = "INSERT INTO CLDETAILS (option_one, option_two, option_three)
VALUES
('".$opt1."','".$opt2."','".$opt3."')";   
if (sqlsrv_query($conn,$strSQL))
  {
    echo "Saved !";
  }
else  
{  
  echo "Error Save [".$strSQL."]";
  print_r( sqlsrv_errors());
}

答案 2 :(得分:0)

我在这里改进了你的代码

$opt1 = (isset($_POST['option_one'])) ? 1 : 0;
$opt2 = (isset($_POST['option_two'])) ? 1 : 0;
$opt3 = (isset($_POST['option_three'])) ? 1 : 0;
$strSQL = "INSERT INTO CLDETAILS (option_one, option_two, option_three)
VALUES ('$opt1', '$opt2', '$opt3')";   
if (sqlsrv_query($conn,$strSQL)) echo "Saved !";
else  
{  
  echo "Error Save [".$strSQL."]";
  print_r( sqlsrv_errors());
}  
?>

答案 3 :(得分:0)

$option = array();
$option[0] = (isset($_POST[option_one])? $_POST[option_one] : NULL);
$option[1] = (isset($_POST[option_two])? $_POST[option_two] : NULL);
$option[2] = (isset($_POST[option_three])? $_POST[option_three] : NULL);

$strSQL = "INSERT INTO CLDETAILS (option_one, option_two, option_three)
VALUES
('$option[0], $option[1], $option[2]')";

OR

添加与复选框字段同名的隐藏字段,以设置未选中字段的标准值

<input type="hidden" name="option_one" value="NO" >
<input type="checkbox" name="option_two" value="YES" class='checkbox_divs' >Option one<br>
<input type="hidden" name="option_one" value="NO" >
<input type="checkbox" name="option_two" value="YES" class='checkbox_divs' >Option two<br>
<input type="hidden" name="option_three" value="NO" >
<input type="checkbox" name="option_three" value="YES" class='checkbox_divs' >Option Three<br>