2010-01-30 46 views
5

Vì vậy, tôi có kịch bản đăng ký này:Làm thế nào để chèn dữ liệu mẫu vào bảng cơ sở dữ liệu 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> 

Các 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') 
") 

?> 

Vấn đề là, tên người dùng và mật khẩu được chèn vào bảng "registration_info" tốt. Nhưng đầu vào Giới tính từ trình đơn thả xuống chọn không. Một số có thể cho tôi biết làm thế nào để sửa lỗi này, cảm ơn.

+0

Không bao giờ, bao giờ, bao giờ đặt thông số biểu mẫu vào truy vấn như vậy. Hãy thử các tham số Bind (http://uk.php.net/manual/en/mysqli.prepare.php) thay vì –

+0

Vâng, tôi biết điều này không an toàn chút nào, tôi chỉ thực hành cơ bản, tập lệnh này sẽ không bao giờ trên dòng :) – Richard

+2

Bạn có thể muốn làm một print_r ($ _ POST) và xem cách dữ liệu đến trong kịch bản của bạn, sẽ làm cho nó dễ dàng để gỡ lỗi. – Erik

Trả lời

0

Bạn không cung cấp bất kỳ giá trị nào cho các tùy chọn, do đó, chỉ một chuỗi trống được chèn vào.

+0

Xin lỗi, tôi quên làm điều đó khi tôi viết lại tập lệnh ở đây, trong bản gốc tôi có các giá trị bên trong mỗi tùy chọn và nó vẫn không hoạt động. – Richard

0

Bạn cần đặt thuộc tính giá trị trong các mục danh sách trong HTML.

ví dụ:

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

Xin lỗi, tôi quên làm điều đó khi tôi viết lại tập lệnh ở đây, trong bản gốc tôi có các giá trị bên trong mỗi tùy chọn và nó vẫn không hoạt động. – Richard

0
  1. Bạn không có password đầu vào đây.
  2. Tùy chọn của bạn genderselect box không có giá trị.
  3. Sử dụng mysql_escape_string ít nhất

    $ username = mysql_escape_string ($ _ POST [ 'username']);

hoặc phân tích thành int nếu bạn trừ giá trị int.

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

<? Php echo var_dump ($ _ POST ['gender']); ? >

Điều đó có cho bạn biết điều gì không? Có lẽ kiểu dữ liệu giới tính của bạn (trong bảng của bạn) không tương thích với những gì bạn đưa vào nó? Có lẽ đó là một ENUM ('M', 'F') chẳng hạn.

1

kiểm tra kiểu dữ liệu trong cơ sở dữ liệu, có thể không khớp

+0

Hãy thử chạy truy vấn thông qua phpmyadmin theo cách thủ công? –

-1

Tạo biến nói, $ gend trong tệp php.

Sau đó,

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

Sau đó, tiến hành:

mysql_query ("INSERT INTO registration_info (username, password, giới tính) VALUES ('$ username', '$ password', '$ gend') ");

Hãy thử điều này.

+0

Điều này không trả lời được câu hỏi. Nó không khác với OP đã làm trong mã được cung cấp. – Tristan

1

Hãy thử này nếu bạn đã thực hiện lĩnh vực giới tính như số nguyên trong cơ sở dữ liệu

<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> 

giá trị Sau đó chọn sẽ được đưa vào cơ sở dữ liệu

-1

Có hai lựa chọn cho câu hỏi của bạn: -

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> 

Tùy chọn thứ hai giống như đề xuất @sneha.

Nó có thể giúp bạn.

+0

tại sao bỏ phiếu xuống? –

Các vấn đề liên quan