在删除之前检查用户是否拥有文件

时间:2012-06-16 20:28:19

标签: php mysql sql api

我正在为我的网站构建一个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

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

我认为在这种情况下内连接更合适(也可能比左连接稍快)

相关问题