2010-01-30 4 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> 

РНР/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

Никогда, никогда, никогда не ставьте параметры формы в такой запрос. Попробуйте параметры Bind (http://uk.php.net/manual/en/mysqli.prepare.php) вместо –

+0

Да, я знаю, что это совсем не безопасно, я просто занимаюсь базой, этот скрипт никогда не пойдет on line :) – Richard

+2

Возможно, вы захотите сделать print_r ($ _ POST) и посмотреть, как данные поступают в ваш скрипт, облегчит его отладку. – Erik

ответ

0

Вы не дали ни одного из вариантов значения, поэтому вводится только пустая строка.

+0

Извините, я забыл это сделать, когда я переписал сценарий здесь, в оригинале у меня есть значения внутри каждого параметра, и он все еще не работает. – Richard

0

Вам необходимо установить атрибут value в элементах списка в HTML.

например.

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

Извините, я забыл сделать это, когда переписал сценарий здесь, в оригинале у меня есть значения внутри каждого параметра, и он все еще не работает. – Richard

0
  1. У вас нет password входа здесь.
  2. Ваши genderselect box 's опции не имеют значений.
  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 вручную? –

-1

создать переменную скажем, $ Gend в файле PHP.

Затем

$ Gend = $ _ POST [ 'пол'];

Затем продолжить:

mysql_query ("INSERT INTO registration_info (имя пользователя, пароль, пол) VALUES ('$ имя пользователя', '$ пароль', '$ Gend') ");

Попробуйте это.

+0

Это не отвечает на вопрос. Это ничем не отличается от того, что OP уже сделал в предоставленном коде. – Tristan

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

почему голос? –

Смежные вопросы