I 데이터베이스 각 att_name
값 등출력 MySQL의 결과
I는 연관 배열을 생성 할 것을 가지고 att_value
에서의 가능한 값과 관련된 :
array('att_name' => array('att_value_1', 'att_value_2', 'att_value_3'))
는이를 달성하는 가장 좋은 방법은 무엇입니까?
I 데이터베이스 각 att_name
값 등출력 MySQL의 결과
I는 연관 배열을 생성 할 것을 가지고 att_value
에서의 가능한 값과 관련된 :
array('att_name' => array('att_value_1', 'att_value_2', 'att_value_3'))
는이를 달성하는 가장 좋은 방법은 무엇입니까?
아래에보십시오 :
$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;
....
....
}
하지만 OP가 원하는 형식으로 데이터를 반환하지 않습니다 ... –
Thanks @Felix Kling : 내 게시물 – Lucifer
이 방법 :
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);
}
단순히, 당신이 밖으로 작업의 일부를 하위 수 원하는 결과를 선택하고 원하는 데이터 구조를 만들 수있는 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);
thnx에게 도움을주었습니다! –
'물론 mysql_fetch_assoc' ... – Norse
당신이 원하는 방법으로 행을 가져 오기 한 다음 반복하고 원하는 형식의 새로운 배열을 만듭니다. 해당 형식을 생성 할 수있는 SQL 쿼리가 없습니다. 이것은 매우 간단합니다. 배열에 익숙해 지도록 제안합니다 : http://php.net/manual/en/language.types.array.php 그리고 아마도 mysql_fetch_ * 함수 : http://php.net /manual/en/ref.mysql.php. –
왜 그런 배열을 만들고 싶습니까? mysql_fetch_assoc은 (키, 값) 배열을 준다. – nunespascal