Php PDO到数据库的连接

Php PDO到数据库的连接,php,mysql,pdo,Php,Mysql,Pdo,我有一个带有2个表的数据库。学生和教授。我又创建了一个登录表,里面有来自学生和教授的所有电子邮件和密码。我想创建一个学生尝试登录,它会将他发送到某个Student.php,当profesor尝试登录时,它会将他发送到profesor.php 我尝试使用此代码,但它总是返回1。所以这不是一个好的选择 if(isset($_POST['Submit'])){ $sql= "SELECT COUNT (*) FROM `students` AND 'Profesors' WHERE `usernam

我有一个带有2个表的数据库。学生和教授。我又创建了一个登录表,里面有来自学生和教授的所有电子邮件和密码。我想创建一个学生尝试登录,它会将他发送到某个Student.php,当profesor尝试登录时,它会将他发送到profesor.php

我尝试使用此代码,但它总是返回1。所以这不是一个好的选择

if(isset($_POST['Submit'])){

$sql= "SELECT COUNT (*) FROM `students` AND 'Profesors' WHERE `username` = :username and `password` = :password ";
$result = $connection->prepare($sql);
$result->bindParam(":username" ,$_POST['username']);
$result->bindParam(":password" ,$_POST['password']);
$result->execute();

$num=$result->rowCount();
if($num > 0){
    header("location:index.php");
}else{
    header("location:login.php");
}

我需要一些想法,如何更改我的数据库或此登录代码

以下是您可能希望如何构建此结构的想法 可能有一个定义账户类型的表格

account_type_id | account_type_desc | account_type_dest
其中第一个是唯一密钥,第二个是“教授”、“学生”或您添加的任何其他内容,第三个是您希望发送该类型用户的位置。“student.php”、“professor.php”等

那么您的用户表将类似于

account_id | account_type_id | email | password

然后,您可以在用户表中查询与试图登录的用户匹配的用户,验证他们的密码,获取帐户类型id并将其与帐户类型表相对应,然后您可以根据该信息进行操作。

您可以使用子查询和union语句来执行此操作。可以使用union语句从两个表中创建一个表

$subquery = "SELECT username,password FROM `students` UNION SELECT username,password FROM `Profesors`";
然后使用子查询作为源表运行查询

$sql= "SELECT * FROM (" . $subquery . ") WHERE `username` = :username and `password` = :password ";

然后使用rowCount确定返回了多少行。

您希望使用php会话或向用户发出cookie,以实现正确、安全的用户登录

在你的询问中,我认为你想要:

$sql= "SELECT COUNT (*) FROM `students` AND 'Profesors' WHERE `username` = ".$_POST['username']." and `password` = ".$_POST['password']." ";

我个人不会让教授和学生使用相同的登录。现在回答这个问题,我将我的问题改为:

SELECT user_type FROM `login_table` 
WHERE `username` = :username AND `password` = :password 
一旦查询返回结果,我将检查用户类型字段并相应地重定向

$num=$result->rowCount();
if($num > 0){
   $data=$result->fetch();
   if($data['professor']){
      header("location: professor.php");
   }else{
      header("location: student.php");
   }
}else{
    header("location:login.php");
}

我对你的桌子结构有点困惑。。。学生/教授表和登录表中有什么?我想你是对的。这样说是不可能的。我应该添加一个复选框,然后检查学生还是教授?你不应该让学生决定他们是否是教授。谢谢你。。这对我帮助很大!