我有一个查询,其中来自唯一选项的输出在while循环belp查询中重复使用mysql dump
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 :(得分: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
)
)
)