2017-03-20 3 views
0

간단한 등록 양식을 만들었습니다. 이 양식을 편집하여 user_id 또는 date_created 같은 것을 추가해야합니까? user_id 열을 PHPMyAdmin에 추가 할 때 사용자가 등록 할 수 없지만 'First Name'; '성'; '이메일'; 데이터베이스 내 '암호'는 모든 것이 작동합니다.php; mysql; user_id 또는 date_created를 삽입하는 방법?

<!DOCTYPE html> 
<html> 
<head> 
    <title>Registration</title> 
</head> 
<body> 
<?php 
$lclhost = "localhost"; 
$pass = ""; 
$root = "root"; 
$database = "regis"; 
$con=mysqli_connect ("$lclhost", "$root", "$pass") or die("connection fail".mysql_error()); 
mysqli_select_db($con, $database) or die("database fail".mysql_error()); 
?> 
<form method="get"> 
    First Name : <input type="text" name="fname"><br> 
    Last Name : <input type="text" name="lname"><br> 
    Email: <input type="text" name="email"><br> 
    Password: <input type="Password" name="password"> 
    <input type="submit" name="btnsubmit"> 
</form> 
<?php 
if (isset($_GET['btnsubmit'])) 
{ 
    $fname = $_GET['fname']; 
    $lname = $_GET['lname']; 
    $email = $_GET['email']; 
    $password = $_GET['password']; 
    $registration = "INSERT INTO tbl_info values ('".$fname."','".$lname."','".$email."','".$password."')"; 
    mysqli_query($con,$registration); 
    echo "Succes!"; 
} 
?> 
</body> 
</html> 
+0

자동 증가 중입니까? –

+0

db에'user_id' 컬럼을 추가하면 코드가 단순히 값을 필요로하기 때문에 코드가 작동하지 않게됩니다. 당신이해야 할 일은 HTML 뷰에 user_id 필드를 추가하고 그것을 나머지 입력과 함께 보내는 것입니다. –

+0

귀하의 스크립트는 [SQL Injection Attack] 위험에 있습니다. (http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php) [ 리틀 바비 테이블] (http://bobby-tables.com/) 심지어 [당신이 입력을 탈출하는 경우, 안전하지 않습니다!] (http://stackoverflow.com/questions/5741187/sql-injection-that-gets -around-mysql-real-escape-string) [준비된 매개 변수가있는 명령문] 사용 (http://php.net/manual/en/mysqli.quickstart.prepared-statements.php) – RiggsFolly

답변

0

당신의 쿼리가 컬럼을 지정하지 않기 때문에, 당신이 제공 한 컬럼 값의 수가 데이타베이스의 컬럼의 수와 정확하게 같을 경우에만 mysql이 작동합니다.

데이터베이스에 추가 열을 추가하면 열 수가 더 이상 같지 않으므로 쿼리가 중단됩니다. 데이터베이스의 열 수는 정확히이다 항상 확인 :

옵션 1 : 조회에서 열 이름을 추가

"INSERT INTO tbl_info(Firstname, Lastname, EmailAddress, Password) 
    values ('".$fname."','".$lname."','".$email."','".$password."')"; 

옵션 2

당신은 두 가지 옵션이 있습니다 검색어에 입력 한 값의 수와 같습니다.

NB : 자동 증분 ID 필드가있는 경우 레코드를 삽입 할 때마다 값을 자동으로 추가하므로 첫 번째 옵션에는 해당 필드를 포함 할 필요가 없습니다. 하지만 두 번째 옵션에 포함 시키거나 빈 문자열이나 null을 값으로 전달해야합니다.