mySQL PDO错误

pla*_*t x 1 php mysql database 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));
Run Code Online (Sandbox Code Playgroud)

我的数据库架构

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 ;
Run Code Online (Sandbox Code Playgroud)

我在插入之前回应了三个变量,以确保它具有值.每当我执行此操作时,我总是会遇到此错误:

致命错误:带有消息'SQLSTATE [21S01]的未捕获异常'PDOException':插入值列表与列列表不匹配:1136列计数与C:\ Apache\htdocs\path\to中第1行的值计数不匹配file.php:47堆栈跟踪:#0 C:\ Apache\htdocs\path\to\file.php(47):PDOStatement-> execute(Array)#1 {main}在C:\ Apache\htdocs\path中抛出\ to\file.php在第47行

The*_*eOx 5

插入语句中的"stud"和"pass"之间有一个逗号 - 它应该是

INSERT INTO my_tb (stud_user, stud_pass, stud_salt) VALUES (:username, :password, :salt)";
Run Code Online (Sandbox Code Playgroud)