1

我正在使用 PHP 和 Microsoft SQL 2003。

我有这张桌子:

Page | Group
------------
   1 |    1
   2 |    2
   3 |    1
   4 |    2

我需要得到一个按“组”分组的数组:

Array( 
  1 => Array(1, 3), 
  2 => Array(2, 4)
);

我正在使用 PDO,我想直接从 SQL 获取数组,而不是使用 PHP 循环解析整个结果。

我能怎么做?

4

1 回答 1

2

不能从 SQL 语句返回多维数组。您当然可以使用存储过程返回多个记录集,但返回多维数组是不可能的。

因此,我建议使用以下解决方案(未经测试):

$stmt = $pdo->prepare("SELECT Page,Group FROM SOME_TABLE");

$array = array();
if($stmt->execute()) {
    while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
        $array[$row['Group']][] = $row['Page'];
    }
}

这会将页码分组到不同的组中,因此返回一个数组,如:

Array( 
  1 => Array(1, 3), 
  2 => Array(2, 4)
);
于 2013-10-22T14:39:06.987 回答