2012-02-17 2 views
-1

Если я вхожу в систему с моей электронной почтой и паролем в таблице «students», как я могу получить данные из таблицы «данные», где совпадают адреса электронной почты?PHP: Как получить данные из 2 таблиц

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 
) 
+1

Что означает «og in с моей электронной почтой и паролем в таблице« студенты »? Является ли электронная почта, хранящаяся в сеансе, или вы хотите получить SQL-запрос, когда указанный адрес электронной почты и пароль возвращают не только соответствующие данные из 'students', но также строки, где' data.email = students.email'? – dbrumann

+0

Знаете ли вы, как сохранить имя пользователя входа в систему? –

+0

слышал о 'JOINS'? –

ответ

0

Просьба уточнить вопрос. Откуда появился пароль? Сценарий в PHP?

SELECT * FROM data WHERE student .EMAIL = "$ my_email" И student .password = "$ my_password"

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 
+2

Не очень полезно указывать a и b как идентификатор. Пожалуйста, не давайте такой совет неопытным разработчикам. Использование s и d соответственно не является одним нажатием клавиши больше, но читабельно лучше. Особенно, когда запросы развиваются и усложняются с течением времени. –

1

Ну, простой ответ просто заключался бы в выполнении запроса, такого как

SELECT * FROM data WHERE email = '$emailAddress' 

Где $ EMAILADDRESS является адрес электронной почты, который был использован войти в систему.

Но вы должны действительно думать о вашей конструкции схемы. Возможно, пойдите и прочитайте несколько книг/руководств по основам, и есть ряд возможных проблем с тем, что у вас есть. Вероятно, вы должны иметь числовой первичный ключ в своей таблице «students» и ссылаться на него как на внешний ключ в другой таблице. Вы также должны подумать о переименовании второй таблицы. «Данные» на самом деле не описывают, что он делает; все (или почти) в базе данных - это данные! Кроме того, все ваши столбцы id являются varchars. Если у вас нет буквенно-цифровых идентификаторов, вы должны сделать эти столбцы правильным типом для данных, которые они хранят.

0

Если вы хотите, чтобы подтвердить логин и получить данные в одном запросе, использовать LEFT JOIN, который в следующем примере даст вам результат от students таблицы, даже если нет ничего в data таблицы для этого адреса электронной почты ,

$query = "SELECT * FROM `students` 
    LEFT JOIN `data` ON `students`.`email` = `data`.`email` 
    WHERE `students`.`password` = '" . $password . "' 
    AND `students`.`email` = '" . $email. "'"; 

Примечание: если существует несколько строк в таблице data для адреса электронной почты, каждая строка будет возвращена и будет содержать идентичные student.password и student.email значения.

Смежные вопросы