2011-03-18 8 views
0

내가 PRODUCT_CATEGORY가 연결 테이블 인과 제품, PRODUCT_CATEGORY 및 카테고리라는 세 개의 테이블을 조인.PHP의 SQL - 세 개의 테이블

어떻게 PHP에서 SQL을 사용하여이 테이블을 가입 할 수 있습니까?

는 연결 테이블은 제품의 테이블에 링크 된 제품 ID 및 범주에 연결 CATID있다.

답변

4

이런 식으로 뭔가? 추가 변수에서 productId에와 카테고리 ID가되어야한다는 요구 사항 :

SELECT 
    * 
FROM 
    product 
INNER JOIN 
    product_category 
    ON product_category.productID = product.productID 
INNER JOIN 
    category 
    ON category.catID = product_category.catID 
+0

좋아하지만 어떻게 내가 제품 및 카테고리를 복용하여이를 사용할 수 있습니다 PHP 변수에서. – Chris

+0

먼저 Prepared Statements를 PHP로 작성하는 방법을 찾아야합니다. 이를 통해 남용 될 수없는 안전한 방법으로 SQL 코드에 매개 변수를 제공 할 수 있습니다 (SQL 주입 공격 조회). * WHERE product.productID = : 제품 ID * – MatBailie

+0

http://stackoverflow.com/questions/60174/best-way-to-stop-sql-injection-in-php – MatBailie

2

귀하의 질의는 다음과 같이 보일 것이다

$query = "SELECT * FROM 
      product p 
      JOIN product_category pc ON p.id = pc.productId 
      JOIN category c ON c.id = pc. categoryId 
      WHERE p.id = {$productId} 
      AND c.id = {$categoryId}"; 
+0

추가 요구 사항은이 SQL 주입 공격에 열려있는 예이다 다른 대답 – Nanne

+0

에 주석으로 게시 @Dems. 이 방법을 사용하기 전에 해당 내용을 읽어보십시오. 필자는 사용자가 매개 변수를 제공 한 경우 이러한 방식으로 실행하기 위해 직접 SQL 쿼리를 작성하지 마십시오. – MatBailie

+0

그런 식으로 조금만 더 해보았으니, 이런 식으로 kneejerk 반응을 추가하지 마십시오. 당신의 vars가 사전에 숫자로되어 있는지 (왜 쿼리 안에서 그렇게하고 싶습니까?) 또는 다른 형태의 sanitize를 수행한다면, SQL Injections 공격에는 열리지 않습니다. – Nanne

관련 문제