0

我正在为我的网站构建一个 API,允许用户删除他们上传的文件。显然,我想在用户通过 API 删除它之前检查用户是否拥有该文件。

我有一个文件表和一个用户表,这是架构:

f_id, s_id, u_id, name, size, uploaded

u_id, username, password, email, activated, activation_code

u_id是外键。files 表中的u_id字段指向u_idusers 表中的 。

给定用户用户名,我想找到 users 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';

我假设如果我u_id在 API 请求中获得了用户,那会起作用,但可惜我只获得了他们的用户名。

如何修改该 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
4

1 回答 1

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

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

于 2012-06-16T21:12:07.580 回答