ユーザーがアップロードしたファイルを削除できるようにするサイト用のAPIを構築しています。明らかに、APIを介してファイルを削除する前に、ユーザーがそのファイルを所有しているかどうかを確認したいと思います。
ファイルテーブルとユーザーテーブルがあります。スキーマは次のとおりです。
f_id, s_id, u_id, name, size, uploaded
u_id, username, password, email, activated, activation_code
u_id
外部キーです。filesテーブルのフィールドは、usersテーブルu_id
のを指します。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';
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