我正在为我的网站构建一个API,允许用户删除他们上传的文件。显然,我想在用户通过API删除之前检查用户是否拥有该文件。
我有一个文件表和一个用户表,这里是架构:
f_id, s_id, u_id, name, size, uploaded
u_id, username, password, email, activated, activation_code
u_id
是外键。 files表中的u_id
字段指向users表中的u_id
。
根据用户的用户名,我想找到用户u_id
,然后通过文件ID(f_id
)检查他们是否拥有该文件。
我写了这个SQL:
$sql = 'SELECT u.username
FROM `users` u
JOIN `files` f
ON u.u_id = f.u_id
WHERE f_id = ? AND u.u_id = ?
LIMIT 1';
如果我在API请求中向用户u_id
提供了帮助,我认为这样做有效,但是我只给了他们用户名。
如何修改该SQL以查找其用户ID并使用它?
感谢。
编辑:好吧我有这个查询,但它总是返回一个空的结果集,即使文件ID和用户名都存在。
SELECT u.username
FROM `users` u
JOIN `files` f
ON u.u_id = f.u_id
WHERE f.f_id = ? AND u.username = ?
LIMIT 1
答案 0 :(得分:0)
放手一搏:
SELECT f.name
FROM `users` AS u
INNER JOIN `files` AS f ON f.u_id = u.u_id AND f.f_id = ?
WHERE u.username = ?
LIMIT 1
我认为在这种情况下内连接更合适(也可能比左连接稍快)