PHP:如何从2个表中获取数据

时间:2012-02-17 09:26:18

标签: php mysql create-table

如果我使用“学生”表中的电子邮件和密码登录,我如何从电子邮件地址匹配的表格“数据”中获取数据?

CREATE TABLE `students` (
  `email` varchar(150) NOT NULL,
  `password` varchar(150) NOT NULL
)

CREATE TABLE `data` (
  `student_id` varchar(50) NOT NULL,
  `studygroup_id` varchar(50) NOT NULL,
  `applied_courses` varchar(50) NOT NULL,
  `study_results` varchar(50) NOT NULL,
  `email` varchar(150) NOT NULL
)

4 个答案:

答案 0 :(得分:1)

嗯,简单的答案就是执行像

这样的查询
SELECT * FROM data WHERE email = '$emailAddress'

其中$ emailAddress是用于登录的电子邮件地址。

但是你应该考虑一下你的架构设计。也许去阅读一些关于基础知识的书籍/教程,你可能会遇到很多问题。您可能应该在“学生”表上有一个数字主键,并将其作为外键引用到另一个表中。您还应该考虑重命名第二个表。 “数据”并没有真正描述它的作用;数据库中的所有(或非常接近)都是数据!此外,您的所有id列都是varchars。除非您有字母数字ID,否则您应该使这些列成为其所持数据的正确类型。

答案 1 :(得分:0)

请澄清问题。密码来自哪里? PHP中的脚本?

SELECT * FROM data WHERE student。email =“$ my_email”AND student。password =“$ my_password”

答案 2 :(得分:0)

学生表还应包含student_id

alter table student add column student_id int auto_increment primary key

然后查询

select a.email, a.password,b.studentgroup_id, b.applied_course,b.student_result
from student a inner join 
data b 
on a.student_id=b.student_id 

答案 3 :(得分:0)

如果要在一个查询中确认登录并获取数据,请使用LEFT JOIN,在以下示例中,它将从students表中提供结果,即使{{1}中没有任何内容该电子邮件地址的表格。

data

注意:如果电子邮件地址的$query = "SELECT * FROM `students` LEFT JOIN `data` ON `students`.`email` = `data`.`email` WHERE `students`.`password` = '" . $password . "' AND `students`.`email` = '" . $email. "'"; 表格中有多行,则会返回每一行,其中包含相同的datastudent.password值。