2010-12-19 3 views
0

SQL 데이터베이스에서 category ID를 선택해야합니다. 변수가 $product_id이고 각 제품 ID마다 PHP를 사용하여 선택해야하는 표에 3 개의 행이 있습니다.MYSQL에서 몇 줄 선택

내가 "SELECT * FROM table_name WHERE product_id='$prodid'";을하면 상단에 하나만 있습니다.

product_id을 포함하는 세 개의 category_id을 모두 어떻게 선택합니까?

+0

다른 테이블에있는 카테고리와 제품이 있으며 가입하려고합니까? – rkg

+1

쿼리를 실행하고 결과를 검색하는 데 사용중인 PHP 코드를 게시하십시오. – Lee

답변

1

PHP의 mysql 함수를 사용한다고 가정 해 봅시다. 맞습니까? 귀하의 쿼리가 실제로 세 행을 모두 반환하지만 당신은 그들 모두를 가져 오지 않는다고 생각하고 있습니다.

$sql = "SELECT * FROM table_name WHERE product_id='$prodid'"; 
$r = mysql_query($sql, $conn); //where $conn is your connection 

$x = mysql_fetch_SOMETHING($r); //where something is array, assoc, object, etc. 

fetch 기능은 한 번에 하나의 행만 제공합니다. 당신은 3 명이 필요하다고 말하면 3 번 처형되어야합니다.

$x[0] = mysql_fetch_assoc($r); 
$x[1] = mysql_fetch_assoc($r); 
$x[2] = mysql_fetch_assoc($r); 

또는이 쿼리가 실제로 하나의 행을 반환 한 후 그것을하지 않으며, 우리는 당신의 테이블/필드 어쩌면 샘플 데이터를 참조해야하는 경우이

while($curRow = mysql_fetch_assoc($r)) //this returns false when its out of rows, returns false 
{ 
    $categoryIds[] = $curRow['category_id']; 
} 

더 좋을 것이다.

+0

mysql_fetch_array와 print_r ($ array)을 사용합니다; 그 conent를보기 위해 단지 첫번째 열을 얻었다. 나는 질문을 한 직후 잠시 생각했다. 나는 일어날 때 이것을 시도 할 것이다, 나는 지금 막 나의 밤 교대에서 집으로왔다. 내가 너에게 알려주지. 고맙습니다. – Ivar

+0

mysql_fetch_array가 행의 배열을 제공하지 않습니다. 한 번에 하나의 행에 숫자로 색인 된 각 필드를 제공합니다. while 루프가 필요합니다. mysql_fetch_assoc은 인덱스가 필드의 이름을 따라 명명된다는 점을 제외하면 똑같은 것을한다. assoc을 사용하거나 숫자 인덱스가 category_id인지 확인해야합니다 (SELECT *에서 SELECT category_id로 쿼리를 변경하면 해당 $ curRow [0]을 알 수 있습니다) –

+0

while 루프를 사용했는데 성공했습니다. 고맙습니다. – Ivar

1

SQL이 올바르지 만 왜 카테고리 테이블에 product_id를 저장합니까? 일대 다 관계라면 category_id 만 제품 테이블에 저장하는 것이 좋습니다.

+0

이 테이블은 cat_id 및 prod_id로만 구성되며 범주에 제품을 할당하는 데 사용됩니다. 구성 요소 (버추 마트)는 방금 그 방법대로 지어졌고, 나는 그 이유를 모른다. – Ivar

0

SQL 쿼리가 원하는 작업에 적합합니다. 이 분야 PRODUCT_ID = $ prodid는 함께 TABLE_NAME에 모든 레코드을 선택합니다 (뿐만 아니라 1 또는 3하지만 변수와 일치하는 모든이)

몇 레코드를 선택하려면이 LIMIT 키워드

당신을 사용해야합니다 테이블 구조와 변수 $ prodid를 살펴보고 문제를 찾아야합니다.

관련 문제