gpt4 book ai didi

php - 我怎样才能做这个mysql查询

转载 作者:行者123 更新时间:2023-11-29 06:52:07 24 4
gpt4 key购买 nike

我正在尝试构建一个登录系统。但是当我为它创建查询时遇到问题。我将简要说明我需要的是什么。我有 usernamepassword 表单登录表单。现在我需要用我的登录表检查这些值是否存在于表中。我还需要使用 tutors , institutes 和 students 表在同一个查询中检查用户的注册是否已过期。学生注册未过期。此外,我需要使用 tutors 和 institutes 表中的 active 列来检查他们的个人资料是否已激活。同样,students 表没有“active”列。他们不需要激活他们的个人资料。

这些是我需要从查询中获取的列。

login_id // From login table
username // From login table
login_type // From login table
date-expire true or false // From tutors or institute or student.

我尝试过类似这样的操作,但对如何在同一个查询中将所有表附加在一起感到困惑。

$q = "SELECT login_id, username, login_type, IF(date_expires >= NOW(), true, false) 
FROM login
INNER JOIN tutors ON login.login_id = tutors.login_id
INNER JOIN institutes ON login.login_id = institutes.login_id
WHERE (username='$username' AND password='" . get_password_hash($password) . "'
AND (tutors.active IS NULL || institutes.active IS NULL))";

但是这个查询不起作用。谁能告诉我我犯了什么错误?

这是我的表结构

CREATE TABLE login (
login_id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
username VARCHAR(30) NOT NULL,
password VARBINARY(32) NOT NULL,
login_type ENUM('tutor', 'institute', 'student') NOT NULL,
PRIMARY KEY (login_id)
)


CREATE TABLE institutes (
institute_id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
login_id SMALLINT UNSIGNED NOT NULL,
active CHAR(32),
date_expires DATE NOT NULL,
date_registered TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (institute_id)
)

CREATE TABLE tutors (
tutor_id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
login_id SMALLINT UNSIGNED NOT NULL,
active CHAR(32),
date_expires DATE NOT NULL,
date_registered TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (tutor_id)
)

CREATE TABLE students (
student_id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
login_id SMALLINT UNSIGNED NOT NULL,
date_registered TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (student_id)
)

最佳答案

编辑:

$q = "SELECT l.login_id, l.username, l.login_type, t.date_expires
FROM login AS l
INNER JOIN tutors AS t ON l.login_id = t.login_id
WHERE l.username='$username' AND l.password='" . get_password_hash($password) . "'
AND t.date_expires >= NOW()
AND t.active IS NULL";

我已经拆分了您的查询。这只是您问题的答案的开始。我仍然不清楚您需要的所有要求。

如果您可以发布一些具有所需输出的示例数据,我将能够进一步帮助您。

关于php - 我怎样才能做这个mysql查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14713307/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com