2010-01-30 118 views
5

所以我有这个注册脚本:如何插入表单数据到MySQL数据库表

的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') 
") 

?> 

的问题是,在用户名和密码会被插入到“registration_info”表中。但是选择下拉菜单中的性别输入不会。有人能告诉我如何解决这个问题,谢谢。

+0

永远不会永远把形式参数放入这样的查询中。尝试绑定参数(http://uk.php.net/manual/en/mysqli.prepare.php)而不是 – 2010-01-30 22:40:32

+0

是的,我知道这并不安全,我只是练习基本的,这个脚本永远不会去在线:) – Richard 2010-01-30 22:45:38

+2

您可能想要做一个print_r($ _ POST)并查看数据如何进入您的脚本,将使它易于调试。 – Erik 2010-01-30 23:50:22

回答

0

你没有给出任何选项的值,所以只有一个空字符串被插入。

+0

对不起,当我在这里重写了脚本时,我忘了这么做,原来我在每个选项中都有值,但它仍然不起作用。 – Richard 2010-01-30 22:42:50

0

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

例如

<option value="Male">Male</option> 
+0

对不起,当我在这里重写了脚本时,我忘了这么做,原来我在每个选项中都有值,但它仍然不起作用。 – Richard 2010-01-30 22:42:07

0
  1. 你们这里有没有password输入。
  2. 您的genderselect box的选项没有值。
  3. 使用mysql_escape_string至少

    $用户名=函数mysql_escape_string($ _ POST [ '用户名']);

或解析到int如果你除了int值。

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

< PHP 回波的var_dump($ _ POST [ '性别'])?; ? >

这是否告诉你什么?也许你的性别数据类型(在你的表中)与你投入的内容不兼容?例如,它可能是ENUM('M','F')。

1

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

+0

尝试手动通过phpmyadmin运行查询吗? – 2012-06-30 08:43:34

-1

创建一个变量说,$ GEND在PHP文件。

然后,

$ gend = $ _ POST ['gender'];

然后,继续:

的mysql_query( “INSERT INTO registration_info(用户名,密码,性别)VALUES( '$用户名', '密码$', '$ GEND') ”);

试试这个。

+0

这不回答这个问题。它与已提供的代码中的OP没有区别。 – Tristan 2016-01-31 00:18:59

1

试试这一个,如果你在数据库中采取性别字段作为整数

<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

有两个选项你的问题: -

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> 

第二个选项与@​​sneha建议相同。

它可以帮助你。

+0

为什么投票表决? – 2016-05-27 11:25:44