Php PDO与数据库的连接

时间:2014-06-10 18:46:42

标签: php mysql pdo

我有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");
}

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

4 个答案:

答案 0 :(得分:0)

以下是您想要如何构建此内容的想法 有一个表定义帐户类型的表,也许

account_type_id | account_type_desc | account_type_dest

第一个是唯一键,第二个是“教授”“学生”或您添加的任何其他内容,第三个是您要发送该类型用户的位置。 “student.php”,“professor.php”等

然后你的用户表就像

account_id | account_type_id | email | password

然后,您可以在用户表中查询与尝试登录的用户匹配的用户,验证他们的密码,获取帐户类型ID并将其转换为帐户类型表,然后您可以根据该信息采取行动

答案 1 :(得分:0)

您可以使用子查询和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确定返回的行数。

答案 2 :(得分:0)

您希望使用php会话或向用户发出cookie以获得正确且安全的用户登录。

在您的查询中我认为您想要:

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

答案 3 :(得分:0)

我个人不会让教授和学生使用相同的登录信息。现在回答这个问题我会将查询更改为以下内容:

SELECT user_type FROM `login_table` 
WHERE `username` = :username AND `password` = :password 

一旦查询返回结果,我会检查user_type字段并相应地重定向。

$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");
}