2012-06-08 2 views
1

I 데이터베이스 각 att_name 값 등출력 MySQL의 결과

I는 연관 배열을 생성 할 것을 가지고 att_value에서의 가능한 값과 관련된 :

array('att_name' => array('att_value_1', 'att_value_2', 'att_value_3')) 

는이를 달성하는 가장 좋은 방법은 무엇입니까?

+0

'물론 mysql_fetch_assoc' ... – Norse

+0

당신이 원하는 방법으로 행을 가져 오기 한 다음 반복하고 원하는 형식의 새로운 배열을 만듭니다. 해당 형식을 생성 할 수있는 SQL 쿼리가 없습니다. 이것은 매우 간단합니다. 배열에 익숙해 지도록 제안합니다 : http://php.net/manual/en/language.types.array.php 그리고 아마도 mysql_fetch_ * 함수 : http://php.net /manual/en/ref.mysql.php. –

+0

왜 그런 배열을 만들고 싶습니까? mysql_fetch_assoc은 (키, 값) 배열을 준다. – nunespascal

답변

0

아래에보십시오 :

$sql = "SELECT * from tablename"; 
$result = mysql_query($sql,$con); 
$final_array=array(); 
while ($row = mysql_fetch_object($result)) 
    { 
     $final_array[$row->att_name][0]=$row->att_value_1; 
     $final_array[$row->att_name][1]=$row->att_value_2; 
     .... 
     .... 
    } 
+0

하지만 OP가 원하는 형식으로 데이터를 반환하지 않습니다 ... –

+0

Thanks @Felix Kling : 내 게시물 – Lucifer

0

이 방법 :

SELECT 
    item, 
    att_name, 
    GROUP_CONCAT(att_value SEPARATOR "<!>") AS att_value 
FROM 
    table 
GROUP BY 
    att_name 

그런 당신에게 뭔가를 줄 것이다 :

item att_name att_value 
----------------------------- 
books height  150 mm<!>250 mm 
books price  rs:20<!>Rs:20 
books size  15 pg<!>30 pg<!>60 pg 
books width  300 mm<!>400 mm 

당신은 <!>에 의해 att_value에서 결과를 폭발합니다. 나는이 <!>을 사용하므로 att_value 안에 값을 갖는 것은 불가능합니다. 언젠가 이것을 사용할 것이라고 생각한다면 다른 분리 기호를 사용하십시오. 예 : [{--}], _SEPARATOR_, [_-CUT-_] 등 100 % 확신 할 수있는 것은 선택 항목을 사용하지 않고 항상 텍스트를 구분하는 구분 기호로 사용합니다.

그래서 예 :

$SQL = 'SELECT item, att_name, GROUP_CONCAT(att_value SEPARATOR "<!>") AS att_value FROM table GROUP BY att_name'; 
$Query = mysql_query($SQL) or die('MySQL Error : '.mysql_error()); 

while($Assoc = mysql_fetch_assoc($Query)){ 
    $Assoc['att_value'] = ($Assoc['att_value'] != '' ? explode('<!>', $Assoc['att_value']) : NULL); 
    print_r($Assoc); 
} 
1

단순히, 당신이 밖으로 작업의 일부를 하위 수 원하는 결과를 선택하고 원하는 데이터 구조를 만들 수있는 PHP에서 그들을 반복하여이 작업을 수행 할 쉽게 가능하지만 GROUP_CONCAT()와 MySQL로 :

물론
$query = " 
    SELECT att_name, GROUP_CONCAT(att_value SEPARATOR ',') AS values 
    FROM table_name 
    GROUP BY att_name 
"; 
$result = mysql_query($query); 

$array = array(); 
while ($row = mysql_fetch_assoc($result)) { 
    $array[$row['att_name']] = explode(',', $values); 
} 

print_r($array); 

, 당신의 가치는 문자 (또는 문자의 순서)는 MySQL의 쿼리에서 SEPARATOR 사용하므로 안전 순수 PHP 방법을 포함하지 않을 경우에만 이렇게 것 be :

$query = " 
    SELECT att_name, att_value 
    FROM table_name 
"; 
$result = mysql_query($query); 

$array = array(); 
while ($row = mysql_fetch_assoc($result)) { 
    $array[$row['att_name']][] = $row['att_value']; 
} 

print_r($array); 
+0

thnx에게 도움을주었습니다! –