2017-02-06 1 views
0
내가 여기

MySQL의 && ID

127.0.0.1:36368 [500]: /create_account.php - Uncaught PDOException: SQLSTATE[21S01]: Insert value list does not match column list: 1136 Column count doesn't match value count at row 1 in /home/hue/social_network/classes/DB.php:10 
Stack trace: 
#0 /home/hue/social_network/classes/DB.php(10): PDOStatement->execute(Array) 
#1 /home/hue/social_network/create_account.php(7): DB::query('INSERT INTO use...', Array) 
#2 {main} 
    thrown in /home/hue/social_network/classes/DB.php on line 10 

터미널에서 다음과 같은 오류를 얻고있다

와 PHP는 문제는 내 PHP 코드입니다 ID : ": id"및 "\ '\'"에 대한 INSERT 값은 변경되지만 아무 것도 변경되지 않습니다. 당신은 열 사양을 생략하고

INSERT INTO users (username, password, email) VALUES (:username, :password, :email) 

을 기본 가능성이 id을 포함, 그래서 : 당신은 당신이 사용중인 것을 지정해야 모든 열을 삽입하지 않는 한 내 ID 필드는

+3

** 일반 텍스트 암호를 저장하지 마십시오! ** PHP의 [내장 함수] (http://jayblanchard.net/proper_password_hashing_with_PHP.html)를 사용하여 암호 보안을 처리하십시오. 5.5보다 작은 PHP 버전을 사용하고 있다면'password_hash()'[compatibility pack] (https://github.com/ircmaxell/password_compat)을 사용할 수 있습니다. *** [암호를 잊지 마세요] (http://stackoverflow.com/q/36628418/1011527) *** 또는 해싱을하기 전에 다른 클렌징 메커니즘을 사용하십시오. 이렇게하면 암호가 변경되어 불필요한 추가 코딩이 발생합니다. –

+0

** 경고 ** : 사용자 고유의 액세스 제어 계층을 작성하는 것은 쉽지 않으며 심각하게 잘못 처리 할 수있는 많은 기회가 있습니다. [Laravel] (http://laravel.com/)과 같은 최신 [개발 프레임 워크] (http://codegeekz.com/best-php-frameworks-for-developers/)가있을 때 자신의 인증 시스템을 작성하지 마십시오. 강력한 [인증 시스템] (https://laravel.com/docs/5.3/authentication)이 내장되어 있습니다. 절대 최소한 [권장 보안 베스트 프랙티스] (http://www.phptherightway.com/#security)를 준수하고 ** 비밀번호를 일반 텍스트 **로 저장하지 마십시오. – tadman

답변

4

AUTO_INCREMENT입니다 그리고 다른 것들을 잔뜩.

또한 당신이 가서 자신의 ORM 실수로이 기능을 완성, 전투 테스트되는 여러 거기 있고, 문서화 명심 기록하기 전에 : Doctrine, PropelEloquent은 몇 가지 예입니다.

+0

많은 thnx. 또한 조언을위한 thnx, 방금 기초를 얻으려고했는데 –

+0

여기 조심. 인증 시스템은 악의적으로 어렵습니다. XSS, CSRF, SQL 주입 문제는 현대 인터넷에서 끊임없는 관심사입니다. – tadman