我正在用 PHP(实际上是 codeigniter)+MYSQL 开发一个应用程序...我会尽量让它简单
我正在产品表上进行选择,因此我得到以下结果:
color size quantity
red s 2
red m 3
red l 4
red xl 1
blue s 1
blue m 0
blue l 0
blue xl 1
我需要这样显示结果
color s m l xl
red 2 3 4 1
blue 1 0 0 1
有什么想法吗??? SQL 或 PHP 都可以...
提前致谢。
最佳答案
诚然,在看到其他帖子直接从数据库进行分组后,这种方法似乎相当蹩脚。但是,您可以使用 PHP 来格式化数据,方法是将每种颜色存储在其自己的数组中,然后从那里对其进行迭代:
<?php
$link = mysqli_connect('localhost', 'user', 'pass', 'database');
$q = 'SELECT * FROM product ORDER BY color';
$result = mysqli_query($link, $q);
$color_array = array();
while ($row = mysqli_fetch_array($result)) {
$color = $row['color'];
$size = $row['size'];
$quantity = $row['quantity'];
$color_array[$color][$size] = $quantity;
}
foreach ($color_array AS $color_key => $color_item) {
print $color_key."\t".$color_item['s']."\t".$color_item['m']."\t".$color_item['l']."\t".$color_item['xl']."\n";
}
编辑:
我在您的评论中看到您可能有 1 到 6 种尺寸。我原来的代码并不能真正解决这个问题,所以我对其进行了一些修改,以从数组中读取大小,然后如果在数据库中找到它们,则将其打印出来。
<?php
$link = mysqli_connect('localhost', 'user', 'pass', 'database');
$size_array = array('s', 'm', 'l', 'xl', 'xxl', 'xxxl');
$q = 'SELECT * FROM colors ORDER BY color';
$result = mysqli_query($link, $q);
$color_array = array();
while ($row = mysqli_fetch_array($result)) {
$color = $row['color'];
$size = $row['size'];
$quantity = $row['quantity'];
$color_array[$color][$size] = $quantity;
}
foreach ($color_array AS $color_key => $color_item) {
print "\n".$color_key."\t";
foreach ($size_array AS $size) {
print isset($color_item[$size]) ? $color_item[$size]."\t" : "\t";
}
}
关于php - 交叉引用同一个表中的2个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21947770/