Bạn cần đặt dấu ngoặc kép xung quanh $secpass
trong truy vấn:
$newStudent = $dbh->exec ("INSERT INTO Student (uname, pass, fname, lname, email, currGrade) VALUES('$_POST[reguser]','$secPass','$_POST[regfirst]','$_POST[reglast]','$_POST[regemail]','$_POST[regclassrank]')");
Chỉ là FYI, có rất nhiều vấn đề khác với mã của bạn ở đây. Những điều lớn nhất là muối phải là ngẫu nhiên. Bạn có thể lưu nó trong cơ sở dữ liệu bên cạnh mật khẩu nhưng việc có nhiều muối ngẫu nhiên khác nhau cho mỗi mật khẩu sẽ làm giảm đáng kể việc sử dụng các bảng cầu vồng.
Thứ hai, và đây là một vấn đề lớn hơn nhiều, bạn cần phải thoát khỏi các biến của mình bằng cách sử dụng mysql_real_escape_string()
hoặc bằng cách chuyển đổi quyền truy cập cơ sở dữ liệu của bạn để sử dụng PDO. Nếu không, bạn đang mở mình ra một thế giới đau đớn dưới hình thức tấn công SQL injection.