我一直在搜索和搜索这个网站和网页好几个小时,但我似乎没有找到正确的答案。
我想要完成的是从数据库中获取一个表,将来自给定列的相同值的行组合成一个多维数组。
我的表看起来像这样:
http://i.imgur.com/DkNaw61.png
我想要的是创建一个多维数组,其中setting_group_id是相同的
所以我可以使用这些构建数组来显示我的管理面板上的设置部分。
像这样:
http://i.imgur.com/VxMsWHk.png
我到目前为止的代码是:
$query = "SELECT * FROM bmp_settings";
$mysqli = new mysqli($hostname, $username, $password, $database);
// Check connection
if ($mysqli->connect_errno) {
printf("Connect failed: %s\n", $mysqli->connect_error);
exit();
}
if ($result = mysqli_query($mysqli,$query)) {
while($bmp_setting_groups = mysqli_fetch_assoc($result)) {
echo "<pre>";
print_r ($bmp_setting_groups);
echo "</pre>";
}
}
/* free the results */
mysqli_free_result($result);
/* close connection */
$mysqli->close();
我得到的是12个关联数组。
谁可以帮助我?
答案 0 :(得分:0)
查看完整代码:http://hastebin.com/rakeceqefi.xml
那么,你想要这样的东西吗?
array(1) {
'TeamSpeak' =>
array(2) {
'teamspeak_filetransfer_port' =>
array(6) {
'setting_label' =>
string(17) "Filetransfer Port"
'setting_helpblock' =>
NULL
'setting_type' =>
string(4) "text"
'setting_value' =>
int(30033)
'setting_options' =>
NULL
'setting_weight' =>
int(4)
}
'teamspeak_port' =>
array(0) {
}
}
}
然后你可以这样做:
$conn = new PDO('mysql:host=localhost;dbname=test_a', 'test', 'test'); //replace this with your credentials
$q1 = $conn->prepare('SELECT DISTINCT `setting_group_id` FROM `bmp_settings`');
$q1->execute();
$groups = array_fill_keys($q1->fetchAll(PDO::FETCH_COLUMN, 0), array());
$q2 = $conn->prepare("SELECT * FROM `bmp_settings`");
$q2->execute();
$result = $q2->fetchAll(PDO::FETCH_ASSOC);
foreach ($result as $r) {
$gName = $r['setting_group_id'];
$sKey = $r['setting_key'];
$groups[$gName][$sKey] = $r;
unset($groups[$gName][$sKey]['setting_group_id']); // not really needed
unset($groups[$gName][$sKey]['setting_key']); // not really needed
}
这可以获得上面的数组。