Vous devez mettre des guillemets autour de $secpass
dans la requête :
$newStudent = $dbh->exec ("INSERT INTO Student (uname, pass, fname, lname, email, currGrade) VALUES('$_POST[reguser]','$secPass','$_POST[regfirst]','$_POST[reglast]','$_POST[regemail]','$_POST[regclassrank]')");
Juste pour info, il y a beaucoup d'autres problèmes avec votre code ici. Les plus importants sont que le sel doit être aléatoire. Vous pouvez le stocker dans la base de données à côté du mot de passe, mais avoir un sel aléatoire différent pour chaque mot de passe réduit considérablement l'utilisation des tables arc-en-ciel.
Deuxièmement, et c'est un problème beaucoup plus important, vous devez échapper vos variables en utilisant mysql_real_escape_string()
ou en convertissant votre accès à la base de données pour utiliser PDO. Sinon, vous vous exposez à un monde douloureux sous la forme d'attaques par injection SQL.