2012-03-07 2 views
1

mySQL에서 검색되는 카테고리의 동적 목록이 있습니다. 사용자가 카테고리를 클릭하면 해당 카테고리의 이미지가 DB에서로드됩니다.mySQL의 다양한 테이블에서 열 선택

function getImages($categoryID) 
{ 
return json_encode(select("SELECT * FROM images WHERE categoryID=$categoryID")); 
} 

지금은 또한 "범주"테이블에서 다시 또한 카테고리 이름을 검색 할이 (페이지의 다른 부분에서 선택한 범주의 이름을 포함하는) :이 그것을 수행하는 기능입니다. 나는 이것을 시도했다 :

function getImages($categoryID) 
{ 
return json_encode(select(
     "SELECT categories.categoryName, images.imageFileName, images.imageHeader 
     FROM images JOIN categories 
     ON categories.categoryID = images.categoryID 
     WHERE categoryID=$categoryID")); 
} 

그러나 지금, 나는 심지어 이미지를 얻지 않는다.

어떻게 할 수 있습니까?

+1

'WHERE 카테고리 ID ...' 모호하다. 'WHERE categories.categoryID ... '를 시도하십시오. –

답변

4

WHERE 절에서 categoryID가 모호합니다.

WHERE categoryID=$categoryID 

categoryID가있는 두 개의 테이블이 있으므로 WHERE 중 어느 테이블을보아야하는지 식별해야합니다.

WHERE categories.categoryID=$categoryID 

은 자신을위한 인생을 더 쉽게하려면, 당신은 다음과 같이 테이블을 앨리어싱 고려하는 것이 좋습니다 : 또한

SELECT c.categoryName, i.imageFileName, i.imageHeader 
FROM images i 
JOIN categories c ON c.categoryID = i.categoryID 
WHERE c.categoryID=$categoryID 

, 언어를 당신이 개발? 이것이 웹 응용 프로그램 인 경우 SQL injection 방지를 위해 $ categoryID를 이스케이프 처리하는 것이 좋습니다.

+0

대단히 고마워요! 그래, 그게 효과가있어, 지금 나는 카테고리 이름과 이미지를 얻는다! 나는 PHP와 JS로 발전한다. 네, 웹용입니다. 비록 내가 사용자가 $ categoryID 부분을 보지 않을 것이라고 생각한다. 링크를 클릭하면 JS 코드를 볼 수있다 : javascript : getImages (4), 여기서 getImages는 API.php를 호출하는 함수이다. 내 getImages() 함수를 포함하는 BusinessLogic.php에 대한 API.php를 SELECT 문과 함께 사용합니다. 하지만 SQL 주석에 대해 더 많이 알고 싶습니다. 주석 필드도 만들 계획입니다 ... – Igal

4

SQL 쿼리에 오류가 있으며 categoryID가 모호합니다. 시도 :

SELECT 
    categories.categoryName, 
    images.imageFileName, 
    images.imageHeader 
FROM 
    images 
JOIN 
    categories on categories.categoryID = images.categoryID 
WHERE 
    categories.categoryID=$categoryID; 
1

나는 즉

WHERE image.categoryID=$categoryID 

, 데이타베이스 엔진은 무슨 뜻 두 개의 카테고리 ID 필드의 알하지 않습니다, 당신은 테이블 이름으로 WHERE 절에 분야를 한정해야합니다 생각합니다. 이와 같은 문제가 다시 발생하면 MySQL 명령 줄에서 쿼리를 테스트해야합니다. 오류 메시지가 나타나면 오류를 수정하는 데 매우 도움이됩니다. 이미, 왼쪽을 시도했다 있었는지 다시 해싱

2

는 분류되지 않은 이미지가 필터링되지 않도록 가입하고 다음과 같은 탈출을 사용

$query = "SELECT c.categoryName, i.imageFileName, i.imageHeader 
    FROM images i 
LEFT JOIN categories c 
    ON c.categoryID = i.categoryID 
WHERE c.categoryID= " . intval($categoryID) . ";"