单选按钮未将值存储在数据库中?

Radio Button not storing the value in database?

我遇到了一个问题,这是一个简单的表格,我必须通过单选按钮提交数据问题是数据库中没有显示任何值,无论是疾病名称还是 yes,没有选项我已经创建了名称为 doctor 的数据库和字段id ,dis_name, 和 ans.

<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
require 'db.php';
if (!empty($_POST)) {
    // keep track validation errors
    $disError = null;
    $ansError = null;

    // keep track post values
    $dis_name = isset($_POST['dis_name']);
    $ans=isset($_POST['ans']);

    // validate input
    $valid = true;
    if (empty($dis_name)) {
        $disError = 'Please enter Diseases Name';
        $valid = false;
    }
    if (empty($ans)) {
        $ansError = 'Please check one of option';
        $valid = false;
    }

    // insert data

    if ($valid) {
        if(isset($_POST['dis_name'])){
            $pdo = Database::connect();

            $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
            $sql = "INSERT INTO diseases (dis_name) values(?)";

            $q = $pdo->prepare($sql);
            $q->execute(array($dis_name));
            Database::disconnect();
            //header("location: diseases.php");
        }
    }
}
?>

//some html code here

<div class="control-group <?php echo   !empty($ansError)?'error':'';?>">
    <label class="check">Have you suffered pain preiviously???</label>
    <div class="controls">
    <input type="radio" name="choice" <?php if (isset($ans) && $ans=="yes") echo "checked";?>
    value="Yes">Yes
    <input type="radio" name="choice"<?php if (isset($ans) && $ans=="no") echo "checked";?>
    value="No">No
<?php                   
//if(isset($_POST['submit'])){
    if(!empty($_POST['choice'])){
        $ans=isset($_POST['ans']);
        $pdo = Database::connect();
        $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $sql = "INSERT INTO diseases (question) values(?)";
        $q = $pdo->prepare($sql);
        $q->execute(array(isset($_POST['choice'])));
        Database::disconnect();
    }
//}
?>

`isset() it gives undefined index warning.`    

我想 ans 代表 answerradio 控制值填充。这就是您在服务器端获取它的方式:

$ans=isset($_POST['ans']);

在你的html中它实际上是choice

你不应该这样理解吗?

$ans=isset($_POST['choice']);

编辑:

为什么要使用 isset 函数来获取 post 值?

isset() returns 布尔值,输入命名为 'choice'。 也许你的意思是:

if( isset($_POST['choice']) ){
    $ans = $_POST['choice'];

    // Optionally you may want $ans to be boolean:
    if($ans == 'Yes') {
        $ans = TRUE;
    } else {
        $ans = FALSE;
    }
}

然后(如果 table 列被正确定义为存储 boolean/integer/enum):

$q->execute(array($ans));

将存储 1 (True) 或 0 (False)