如果我使用“学生”表中的电子邮件和密码登录,我如何从电子邮件地址匹配的表格“数据”中获取数据?
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
)
答案 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. "'";
表格中有多行,则会返回每一行,其中包含相同的data
和student.password
值。