2011-11-18 5 views
0

私はユニークなオプションからの出力は、MySQLのダンプとループベルプクエリながらで繰り返し取得クエリを持っている間に繰り返しMySQLの配列の値は、ループ

CREATE TABLE `txt` (
     `option` varchar(10) NOT NULL, 
     `username` varchar(100) NOT NULL 
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1; 


INSERT INTO `txt` VALUES ('a', 'ashok'); 
INSERT INTO `txt` VALUES ('a', 'sachin'); 
INSERT INTO `txt` VALUES ('b', 'parvez'); 
query: 
$result = mysql_query("SELECT option, name from txt"); 

while ($row = mysql_fetch_array($result)) { 
$option = $row['option']; 
$name = $row['username']; 
$array[$option] = $name; 
} 

print_r($array); 

実際の出力:

Array ([a] => Array ([name] => Array ([0] => ashok [1] => sachin) 
Array ([b] => Array ([name] => Array ([0] => ashok [1] => sachin [2] => parvez) 

予想される出力:

Array ([a] => Array ([name] => Array ([0] => ashok [1] => sachin) 
Array ([b] => Array ([name] => Array ([0] => parvez) 

このクエリで私が間違ったことを教えてください。

+0

あなたは、これは右のコードであることを確認していますか?このコードの出力は表示されている実際の出力と一致しません。 – Vikk

答えて

0

あなたのコードは、あなたが "実際"であると主張する結果をもたらさない。ループ内では$array[$option]を上書きし続けますが、実行したいのは配列に値を追加するだけです。

にもかかわらず、あなたは "期待される" の下に名前を付ける結果を生成するコードを以下:

$result = mysql_query("SELECT `option`, `username` from `txt`"); 
while ($row = mysql_fetch_array($result)) { 
    $option = $row['option']; 
    $name = $row['username']; 
    $array[$option]['name'][] = $name; 
} 

結果:

Array 
(
    [a] => Array 
     (
      [name] => Array 
       (
        [0] => ashok 
        [1] => sachin 
       ) 
     ) 
    [b] => Array 
     (
      [name] => Array 
       (
        [0] => parvez 
       ) 
     ) 
)