2010-05-08 5 views
0

nettuts에서 자습서를 찾았습니다. 소스 코드가 있으므로 사이트에서 구현하려고 시도했습니다. 현재 작동 중입니다. 그러나 등록 시스템이 없으므로 등록 시스템을 만들고 있습니다. 문제는 내 예상대로 내 코드가 작동하지 않습니다 ... 데이터베이스에 INSERT하는 방법을 알 수없는 것 같습니다. 다음은 db에 데이터를 삽입하는 함수입니다.INSERT INTO 테이블이 작동하지 않습니까?

function register_User($un, $email, $pwd) { 
$query = "INSERT INTO users(username, password, email) 
       VALUES(:uname, :pwd, :email) 
       LIMIT 1"; 

if($stmt = $this->conn->prepare($query)) { 
    $stmt->bind_param(':uname', $un); 
    $stmt->bind_param(':pwd', $pwd); 
    $stmt->bind_param(':email', $email); 
    $stmt->execute(); 

    if($stmt->fetch()) { 
     $stmt->close(); 
     return true; 
    } else return "The username or email you entered is already in      
        use..."; 
} 

} I 클래스 내에서 데이터베이스에 대한 연결을 디버깅 한

, 그것은 연결 부분을 말한다. 당신이 나를 펜 소수점 오류 도와주세요 수 ...

function register($un, $email, $pwd) 
{ 
    $registerquery = $this->conn->query(
       "INSERT INTO users(uername, password, email) 
       VALUES('".$un."', '".$pwd."', '".$email."')"); 
    if($registerquery) 
    { 
     echo "<h4>Success</h4>"; 
    } 
    else 
    { 
     echo "<h4>Error</h4>"; 
    } 
} 

그리고 그것은 에코 "오류"??? : 내가 대신이 방법을 사용하여 시도

if ($stmt->fetch()) { 

보통, 데이터 조작 쿼리 (삽입, 업데이트, 삭제 등) 할 수있는 결과 집합을 반환하지 않습니다 : :(

첫 번째 예에서
+0

오류 메시지에 대해 '$ this-> conn-> error'를 확인 했습니까? :) – Thorarin

+0

"username"필드의 철자가 "uername" –

답변

4

, 그것은 문제가 될 수있는이 선처럼 보인다 .. 가져올 수 일반적으로 $stmt->execute(); 기능은 당신이 찾고있는 true 또는 false 값을 반환

을 두 번째 예에서는 "사용자 이름"잘못 철자 :

INSERT INTO users(uername, password, ...

1

위의 코드에 오류가 없기를 바랍니다 ... 쿼리를 문자열로 쓰고 매개 변수로 보내면됩니다. 문자열과 매개 변수 변수를 병합 할 때 문제가 발생할 수 있습니다.

필드 이름을 잘못 입력했는지 확인하십시오.

0

첫 번째 예,

$query = "INSERT INTO users(username, password, email) 
      VALUES(:uname, :pwd, :email) 
      LIMIT 1"; 

$query = "INSERT INTO users(username, password, email) 
      VALUES(:uname, :pwd, :email)"; 

"제한"질의 구조의 일부가되어야은 "LIMIT 1"을 제거한다. 자세한 내용은 INSERT USAGE DOCUMENTATION을 참조하십시오.

두 번째 예는, 이미 언급했듯이

, 당신은 "사용자 이름"필드에 맞춤법이있다. 대신 "uername"을 사용했습니다. 이로 인해 "알 수없는 열"오류가 발생합니다.

마지막으로, 문제의 단서를 찾은 곳에서 오류 메시지를 읽었는지 확인하십시오. 또한 데이터베이스 클라이언트를 통해 쿼리 구성을 테스트하여 오류가 없는지 확인하십시오.

+0

LIMIT은 SELECT 문 (SELECT에서 INSERT)에만 적용되며 PostgreSQL에만 적용됩니다. –

0

도와 주신 모든 분들께 감사드립니다. :-) 시간을 찾으면 내 첫 번째 방법을 살펴보고 정정을 적용 해 봅니다 ... 현재로서는 두 번째 방법을 사용하고 있습니다. 분명히 필드의 철자를 잘못 입력했습니다.

다시 한번 감사드립니다!

-1

시도해보십시오.

mysql_query("INSERT INTO `users` (`username`,`password`,`email`) VALUES ('$user','$pass','$email') 
관련 문제