2011-11-27 4 views
0

여기서 내가 잘못한 것을 매우 혼란 스럽습니다.mySQL PDO 오류

내 PDO 문

$sql = "INSERT INTO my_tb (stud_user, stud,pass, stud_salt) VALUES (:username, :password, :salt)"; 
$stmt = $db->prepare($sql); 
$stmt->execute(array(':username' => $student_username,':password' => $student_password,':salt' => $student_salt)); 

내 DB 스키마는

CREATE TABLE IF NOT EXISTS `my_tb` (
`stud_id` int(11) NOT NULL AUTO_INCREMENT, 
`stud_user` varchar(50) NOT NULL, 
`stud_pass` varchar(50) NOT NULL, 
`stud_salt` varchar(50) NOT NULL, 
PRIMARY KEY (`stud_id`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; 

나는 값이 있는지 확인하기 위해 삽입하기 전에 세 바르 에코. 나는 이것을 실행할 때마다, 나는 항상이 오류에 결국 :

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[21S01]: Insert value list does not match column list: 1136 Column count doesn't match value count at row 1' in C:\Apache\htdocs\path\to\file.php:47 Stack trace: #0 C:\Apache\htdocs\path\to\file.php(47): PDOStatement->execute(Array) #1 {main} thrown in C:\Apache\htdocs\path\to\file.php on line 47

답변

5

당신은 "스터드"하고 삽입 문에서 "패스"사이에 쉼표가 - 그것은 또한

INSERT INTO my_tb (stud_user, stud_pass, stud_salt) VALUES (:username, :password, :salt)"; 
+0

. 나는 그 쉼표를 알아 채지 못했습니다. 큰 감사 @ TheOx. –

4

해야한다, 당신을 try/catch 블록에 PDO 문을 포함 시켜서 발생되는 오류에 대한 자세한 정보를 얻고 싶을 것입니다. 같은

뭔가 : 내 나쁜

try { 
    // PDO statements 
} 
catch(PDOException $e) { 
    // handle error 
    echo $e->getmessage(); 
    exit(); 
} 
+0

추가 제안을 주셔서 감사합니다. –