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