0

我创建了一个带有多个复选框的 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

4 回答 4

0

你可以像这样使用它

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

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

于 2013-06-24T10:25:35.787 回答
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());
}
于 2013-06-24T10:26:18.507 回答
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());
}  
?>
于 2013-06-24T10:26:19.297 回答
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]')";

或者

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

<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>
于 2013-06-24T10:27:07.823 回答