Php 如何将表单数据插入MySQL数据库表

Php 如何将表单数据插入MySQL数据库表,php,mysql,insert,Php,Mysql,Insert,所以我有这个注册脚本: HTML: <form action="register.php" method="POST"> <label>Username:</label> <input type="text" name="username" /><br /> <label>Password:</label> <input type="text" name="password" />&l

所以我有这个注册脚本:

HTML:

<form action="register.php" method="POST">
    <label>Username:</label> <input type="text" name="username" /><br />
    <label>Password:</label> <input type="text" name="password" /><br />

    <label>Gender:</label>
    <select name="gender">
      <optgroup label="genderset">
        <option value="Male">Male</option>
        <option value="Female">Female</option>
        <option value="Hermaphrodite">Hermaphrodite</option>
        <option value="Not Sure!!!">Not Sure!!!</option>
      </optgroup>
    </select><br />
<input type="submit" value="Register" />
</form>

用户名:
密码:
性别: 男性 女性 雌雄同体 不确定!!!
PHP/SQL:

<?php

$username = $_POST['username'];
$password = $_POST['password'];
$gender = $_POST['gender'];

mysql_query("INSERT INTO registration_info (username, password, gender) VALUES ('$username', '$password', '$gender')
")  

?>

您没有给任何选项赋值,因此只插入一个空字符串。

您需要在HTML的列表项中设置value属性

e、 g

男性
  • 这里没有
    密码
    输入
  • 您的
    性别
    选择框
    的选项没有值
  • 至少使用

    $username=mysql_escape_字符串($_POST['username'])

  • 或者,如果您不使用
    int
    值,则解析为
    int

    $id = (int) $_POST['id'];
    


    这能告诉你什么吗?也许您的性别数据类型(在您的表中)与您输入的不兼容?例如,它可能是一个枚举('M','F')。

    检查数据库中的数据类型,可能存在不匹配的情况

    在php文件中创建一个变量,例如,$gend

    那么

    $gend=$_POST['gender']

    然后,继续:

    mysql_查询(“插入注册信息(用户名、密码、性别)值(“$username”、“$password”、“$gend”) ") ;

    试试这个。

    如果数据库中的性别字段是整数,就试试这个

    
    男性
    女性
    雌雄同体
    不确定!!!
    

    然后将所选值插入数据库

    您的问题有两个选项:-

    1) If you want to store the gender value in your database then change the datatype of gender field to varchar and then try again
    
    2) If your gender field is integer in database then you have to make changes in select option value like following 
    
    <select name="gender">
      <optgroup label="genderset">
        <option value="1">Male</option>
        <option value="2">Female</option>
        <option value="3">Hermaphrodite</option>
        <option value="4">Not Sure!!!</option>
      </optgroup>
    </select>
    
    1)如果要在数据库中存储性别值,请将性别字段的数据类型更改为varchar,然后重试
    2) 若数据库中的性别字段是整数,那个么必须对select选项值进行如下更改
    男性
    女性
    雌雄同体
    不确定!!!
    
    第二个选项与@sneha建议相同


    它可能会对您有所帮助。

    永远不要在这样的查询中输入表单参数。试试Bind parameters(),我知道这一点都不安全,我只是在练习基本的,这个脚本永远不会上线:)你可能想做一个print\r($\u POST),看看数据是如何进入你的脚本的,这将使调试变得容易。伙计,它可以工作。我刚刚复制并粘贴了你的脚本,并对$u POST进行了var_转储,效果很好!也许你想自己再测试一次!您能告诉我们“注册信息”表的模式吗?特别是“性别”列的类型是什么?抱歉,我在这里重写脚本时忘了这么做,在原始版本中,每个选项中都有值,但仍然不起作用。抱歉,我在这里重写脚本时忘了这么做,在原始版本中,每个选项中都有值,但它仍然不起作用。这并不能回答问题。它与提供的代码中已经执行的OP没有什么不同。
    <select name="gender">
      <optgroup label="genderset">
        <option value="1">Male</option>
        <option value="2">Female</option>
        <option value="3">Hermaphrodite</option>
        <option value="4">Not Sure!!!</option>
      </optgroup>
    </select>
    
    1) If you want to store the gender value in your database then change the datatype of gender field to varchar and then try again
    
    2) If your gender field is integer in database then you have to make changes in select option value like following 
    
    <select name="gender">
      <optgroup label="genderset">
        <option value="1">Male</option>
        <option value="2">Female</option>
        <option value="3">Hermaphrodite</option>
        <option value="4">Not Sure!!!</option>
      </optgroup>
    </select>