Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 单选按钮未将值存储在数据库中?_Php_Database_Radio Button - Fatal编程技术网

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

Php 单选按钮未将值存储在数据库中?,php,database,radio-button,Php,Database,Radio Button,我遇到了一个问题,这是一个简单的表单,我必须通过单选按钮提交数据,问题是数据库中没有显示任何值,无论是disases name还是for yes,no选项,我都创建了名为doctor的数据库,其中包含id、disu name和ans字段 <?php error_reporting(E_ALL); ini_set('display_errors', 1); require 'db.php'; if (!empty($_POST)) { // keep track validation

我遇到了一个问题,这是一个简单的表单,我必须通过单选按钮提交数据,问题是数据库中没有显示任何值,无论是disases name还是for yes,no选项,我都创建了名为doctor的数据库,其中包含id、disu 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.`    

//这里有一些html代码

我想,
ans
代表答案,答案由
radio
控制值填充。以下是在服务器端获取它的方式:

$ans=isset($_POST['ans']);
在html中,它实际上是
choice

你不应该这样得到它吗

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

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

isset()
返回布尔值,输入名为“choice”。 也许你的意思是:

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

    // Optionally you may want $ans to be boolean:
    if($ans == 'Yes') {
        $ans = TRUE;
    } else {
        $ans = FALSE;
    }
}
然后(如果表列正确定义为存储布尔/整数/枚举):


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

它应该是Yes No^您需要为每个输入指定一个值,该值将传递到
$\u POST
superglobal。是否有必要将名称类型设置为数组即选项[],因为当我将其设置为选项[]时如果在数据库中插入值的非,则会给出未定义的索引警告。更好的做法是,如果(!empty($\u POST['choice'])使用NOT-empty()
,而不是
isset()
,因为选项可以设置为空。
$q->execute(array($ans));