2012-06-16 6 views
0

사용자가 업로드 한 파일을 삭제할 수 있도록 허용하는 사이트의 API를 구축하고 있습니다. 분명히, API를 통해 삭제하기 전에 사용자가 파일을 소유하고 있는지 확인하고 싶습니다.삭제하기 전에 사용자가 파일을 소유하고 있는지 확인하십시오.

f_id, s_id, u_id, name, size, uploaded 

u_id, username, password, email, activated, activation_code 

u_id은 외래 키 :

가 나는 파일 테이블과 사용자 테이블이 여기에 스키마입니다. 파일 테이블의 u_id 필드는 사용자 테이블의 u_id을 가리 킵니다.

사용자 이름이 주어지면 사용자 u_id을 찾고 파일 ID (f_id)를 통해 파일을 소유하고 있는지 확인하고 싶습니다. 내가 API 요청의 사용자 u_id 주어진 경우 문제가 해결 거라고 가정,하지만 난 그들의 이름을 부여하고있어 아아있어

$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'; 

:

나는이 SQL을 썼다.

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

무엇을 볼 수 없습니다 그것은 작동하지 않을 것이다. f.u_id가 올바르게 설정 되었습니까? 나는 그것이 당신이 지나가고있는 사용자 이름을 가지고있는 행에 속해 있다는 것을 의미합니까? – Ignas

+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 

내가 내부는 조인이 경우에 더 적합하다고 생각을 (약간 빠른 왼쪽뿐만 아니라 참여보다 수 있습니다)

+0

나는 그 질문에이 오류가 발생한다. '# 1054 -'on clause '의'u.f_id '알 수 없음 –

+0

오, 죄송합니다. 내 대답을 편집했습니다. – Ignas

+0

오, 또한 쿼리와 동일한 순서로 값을 전달하는지 확인하십시오. 예 : f.f_id =? u.username =? 배열 (123, 'admin')이어야합니다. – Ignas

관련 문제