下拉其他值未保存到数据库


dropdown other value not saving to database

         <script type="text/javascript">
    function showfield(name){
      if(name=='Other')document.getElementById('div1').innerHTML='other: <input type="text" name="other" />';
      else document.getElementById('div1').innerHTML='';
    }
    </script>
      <html>
            <head> 
              <meta name="viewport" content="width=device-width, initial-scale=1.0">
                            <link href = "css/bootstrap.min.css" rel = "stylesheet">
              <title> Insert</title>
            </head>
            <body> 
              <h1>Insert Data In to Db</h1>
              <form action="teachersubmit.php" method="post" id="form">
                <input type="hidden" name="submitted" value ="true" />
             <label>  School Code: <input type="text" name="scode" /></label>
             <label>  Category: <input type="text" name="category" /></label>
            <label>   name: <input type="text" name="sname" /></label>
             <label>  Address: <input type="text" name="sadd"></label><br>
            <label>   name:  <select name="gender" id="gender">
              <option value="male">male</option>
 <option value="female">female</option>
                   <option value="Other">Other</option>
            </select></label>
           <div id="div1"></div>

            <button type="submit" form="form" value="Submit">Submit</button>
    </form>
        if (isset($_POST ['submitted']) ){
         $con = mysqli_connect("localhost","root","","school");
               if (mysqli_connect_errno())
          {
          echo "Failed to connect to MySQL: " . mysqli_connect_error();
          }

                if(!empty($_POST['other'])) 
{
   $sname=$_POST['sname'];
$scode=$_POST['scode'];
$category=$_POST['category'];
$sadd=$_POST['sadd'];
$gender=$_POST['other'];
  $sqlinsert= "INSERT INTO form1 (sname,scode,category,sadd,gender) VALUES ('$sname' , '$scode', '$category', '$sadd', '$gender')";
   if(!mysqli_query($con, $sqlinsert)){
    die ('not inserted');
    }}
    else{
$sname=$_POST['sname'];
$scode=$_POST['scode'];
$category=$_POST['category'];
$sadd=$_POST['sadd'];
$gender=$_POST['gender'];
    $sqlinsert= "INSERT INTO form1 (sname,scode,category,sadd,gender) VALUES ('$sname' , '$scode', '$category', '$sadd', '$gender')";
     if(!mysqli_query($con, $sqlinsert)){
        die ('not inserted');
         }
      }

解决。。。。。谢谢大家的帮助,我只是提出了一个条件,如果该隐藏字段为空,则获取下拉值,如果不是,则获取文本框值......欢呼:)


这是数据库结构:
sname    varchar(100)   
category varchar(100)           
sadd     varchar(100)   
scode    varchar(20)
gender   varchar(100)   

option中缺少Value,这就是下拉值未发布表单表单且未保存到数据库的原因

 <option>male</option>
 <option>female</option>

这将是

 <option value="male">male</option>
 <option value="female">female</option>

要检查查询中的错误,请阅读

http://php.net/manual/en/mysqli.error.php

您的代码已开放用于 sql 注入。阅读此内容以防止它形成它

如何防止 PHP 中的 SQL 注入?

编辑

未插入数据,因为数据库中sname,scode,category,sadd integer type,并且您正在尝试插入character

ALter sname,scode,category,sadd作为varchar提交到您的数据库中