2016-07-22 4 views
1

데이터베이스에 연결된 등록 양식을 만들려고 시도하고 있으며 사용자 이름이 고유한지 여부도 확인할 수 있지만 불행히도 내 데이터에 내 새 데이터를 삽입 할 수 없습니다. 표. 누구든지이 일을 도와 주시면 정말 감사하겠습니다.내 MySQL 테이블에 삽입 할 수 있습니다.

<?php 
error_reporting(E_ALL^E_DEPRECATED); 
include 'connect.inc.php'; 
if(isset($_POST['submit'])) { 
    $username = mysql_real_escape_string($_POST['username']); 
    $password = mysql_real_escape_string($_POST['password']); 
    $password2 = mysql_real_escape_string($_POST['password2']);  
    $firstname = mysql_real_escape_string($_POST['firstname']); 
    $lastname = mysql_real_escape_string($_POST['lastname']); 

    //md5 password 
    $password_hash = md5($password); 

    //check to see if the fields are empty 
    if(empty($username) || empty($password)|| empty($firstname)|| empty($lastname)) { 
     echo "Not all fields filled!<br /><br />"; 
     exit(); 
    } 

    //check if password is equal 

    if($password != $password2) { 
     echo "Your Passwords Do Not Match.<br />"; 
     exit(); 
    } else { 
     $query = "SELECT `username` From `users` WHERE username='$username'"; 
     $result = mysql_query($query); 

     if(mysql_num_rows($result) ==1) { 
      echo "Sorry, that user has already exists."; 
      exit(); 
     } else { 
      $query1= mysql_query("INSERT INTO `users` ('',username,password,firstname,lastname) VALUES ('','$username',  '$password_hash', '$firstname', '$lastname'"); 
      if($result1 = mysql_query($query1)) { 
       echo "Registered Successfully"; 
      } else { 
       echo "Sorry, You could not Register";   
      } 
     } 
    } 
} 

?> 
<form action="" method="POST"> 
    Username:<br /> 
    <input type="text" name="username" /><br /><br />   

    Password:<br /> 
    <input type="password" name="password" /><br /><br /> 

    Confirm Password:<br /> 
    <input type="password" name="password2" /><br /><br /> 

    First Name:<br /> 
    <input type="text" name="firstname" /><br /><br /> 

    Last Name:<br /> 
    <input type="text" name="lastname" /><br /><br /> 

    <input type="submit" value="Register" name="submit" /> 
</form> 
+5

INSERT 쿼리에서 공백을 제거하십시오. – Bailey

+1

또한 mysql_ * 함수를 사용하지 마십시오. 자세한 내용은이 질문을 참조하십시오 : http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php – Michael

+0

테이블의 CREATE 문을 보여, 힘든 시간 (_as @ 베일리는 MySQL이 당신에게 이름없는 컬럼을 허용했다고 지적했다. _ 그렇더라도, 작은 따옴표로 구분할 수 있는지 확신 할 수 없습니다._ – Uueerdo

답변

2

INSERT 문에 닫는 괄호가 없습니다.

$query1= mysql_query("INSERT INTO ... '$lastname'"); 

$query1= mysql_query("INSERT INTO ... '$lastname')"); 
               ^

는 그건 그렇고, 내가 찾을 쉽게 대체 구문을 사용하는 단일 행 INSERT를하고, 그래서 열 이름과 값은 최대 일치하는 경우 :

만들 쉽게
$query1= mysql_query("INSERT INTO `users` SET 
    username='$username', 
    password='$password', 
    firstname='$firstname', 
    lastname='$lastname'"); 

오른쪽 열과 일치하는 열을 가져야합니다. 또한 닫을 괄호가 없습니다.

이 구문에 대한 자세한 내용은 http://dev.mysql.com/doc/refman/5.7/en/insert.html을 참조하십시오.


더 이상 사용되지 않는 mysql 확장을 포기하고 대신 PDO를 사용해야합니다. 이 좋은 자습서를 읽으십시오 : https://phpdelusions.net/pdo

그리고 Jay Blanchard가 당신의 코드가 안전하지 않다는 것이 맞습니다. 정확성과 마찬가지로 보안 기능은 추가 기능이 아닙니다. 당신은 초심자이지만, 나쁜 습관을 개발하기 시작해서는 안된다는 것을 언급합니다. 읽기 https://blog.codinghorror.com/youre-probably-storing-passwords-incorrectly/

0

당신은 아마 자동 증가 전자로 아래 쿼리의 빈 데이터 제거 database.Define의 사용자 ID를 삽입 할 :

전 :

$query1= mysql_query("INSERT INTO `users` ('',username,password,firstname,lastname) VALUES ('','$username',  '$password_hash', '$firstname', '$lastname'"); 

후를 :

$query1= mysql_query("INSERT INTO `users` (username,password,firstname,lastname) VALUES ('$username',  '$password_hash', '$firstname', '$lastname')") or die(mysql_error()); 

가 그리고 당신은 당신의 코멘트에서

else { 
    die('Error: ' . mysql_error()); 
    //echo "Sorry, You could not Register"; 
} 

으로 다른 블록을 교체

$query1= mysql_query("INSERT INTO users (username,password,firstname,lastname) VALUES ('$username', '$password_hash', '$firstname', '$lastname'"); 
+0

이것도 시도해 보았지만 "죄송합니다, 등록 할 수 없습니다"라는 else 결과가 계속 표시됩니다. –

+0

mysql_error()를 사용하여 현재 상황을 확인할 수 있습니까? – msantos

+0

어디에 넣을 지 말해 줄 수 있습니까? –

0

시도하여 코드 if($result1 = mysql_query($query1)) {으로 라인을 교체하는 것이 필요합니다, 당신의 INSERT 쿼리는 잘못된 것입니다. SQL 쿼리에 어떤 문제가 있는지 알아 보려면 var_export($query1, true)을 die와 함께 추가하십시오. 즉

die('Error: ' . mysql_error().'<br>Info: '.var_export($query1, true)); 

내 생각에 여전히 ''이 (가) 열 이름 중 하나 인 이전 검색어를 사용하고 있습니다.

+0

이것 역시 시도해 보았지만 "죄송합니다, 등록 할 수 없습니다"라는 else 결과를 계속 울리고 있습니다. –

0

를 사용 if($result1) {

+0

"SQL 구문에 오류가 있습니다. MariaDB 서버 버전에 해당하는 설명서에서 올바른 구문을 확인하여 'at line 1'근처에서 사용할 수 있습니다.이 문제도 해결하고 최선을 다하십시오. –

관련 문제