Array只存储一个值而不是多个值

时间:2016-11-14 13:56:54

标签: php mysql

我无法弄清楚如何解决这个问题:

数据库:

+-------+-------------+------+
| id    | ArticleNr   | Size | 
+-------+-------------+------+
| 1     | AN111       | L    | 
| 2     | AN111       | XL   |
| 3     | AN222       | M    |
+-------+-------------+------+
sql = "SELECT * FROM table GROUP BY article_number"
$result = $site_db->query($sql);
my_array = array();

while ($row = $site_db->fetch_array($result)) {
    $article_number = $row['article_number'];
    $size = $row['size'];
    $my_array[${'article_number'}] .= $row['size'];
}

结果我得到了这个:

  

AN111 :L
   AN222 :M

但是我想要这样的东西:

  

AN111 :L - XL
   AN222 :M

任何帮助将不胜感激

3 个答案:

答案 0 :(得分:3)

我猜你想要这样的东西:

for (NSExtensionItem *item in self.extensionContext.inputItems) {
    for (NSItemProvider *itemProvider in item.attachments) {
        [itemProvider loadPreviewImageWithOptions:@{NSItemProviderPreferredImageSizeKey: [NSValue valueWithCGSize:CGSizeMake(60.0f, 60.0f)]} completionHandler:^(UIImage * item, NSError * _Null_unspecified error) {
            // Set the size to that desired, however,
            // Note that the image 'item' returns will not necessarily by the size that you requested, so code should handle that case.
            // Use the UIImage however you wish here.
        }];
    }
}

除非你真的,真的,真的知道自己在做什么,否则不要将SELECT article_number, GROUP_CONCAT(DISTINCT size) FROM table GROUP BY article_number; SELECT *一起使用。它在大多数其他数据库中是不允许的,通常是代码损坏的标志。

答案 1 :(得分:1)

如果文章编号有多个条目,则sql的返回值将是与分组文章编号匹配的第一个答案,因此返回的L

我会ORDER BY article_number并忘记GROUP BY子句。

这将返回php解析器的所有答案

$sql = "SELECT * FROM table ORDER BY article_number"
$result = $site_db->query($sql);
$my_array = array();

$article_number = '';
$size = '';
while ($row = $site_db->fetch_array($result)) {
    if($row['article_number']!=$article_number) {
    $article_number = $row['article_number'];
    $size = $row['size'];
    } else {
    $article_number = $row['article_number'];
    $size .= ' - '.$row['size'];
    }
    $my_array[$row['article_number']] = $row['size'];
}

答案 2 :(得分:0)

SELECT * 
  FROM my_table 
 ORDER 
    BY articlenr
     , FIELD(size,'XS','S','M','L','XL','XXL');

这个问题的其余部分可以通过一个简单的PHP循环来解决。