我在PostgreSQL / PostGIS数据库中有一个表,我想在php中检索列名及其值,以将它们加载到jquery-datatable中。当我在print_r($row)
之后$row=$query->fetchAll()
我可以看到print_r的输出为:
Array ( [0] => Array ( [d_id] => 20160317 [0] => 20160317 [lid] => 1 [1] => 1 [la_val] => 23.094123 [2] => 23.094123 [lo_val] => 37.607672 [3] => 37.607672 [ctime] => 15:10 [4] => 15:10 [tmp_c] => 28.2 [5] => 28.2 [colour] => 90 [6] => 90).
我可以使用以下方法检索列名:
$query = $conn->prepare("SELECT * FROM tablename");
$query->execute();
$row=$query->fetchAll();
print_r($row);
for ($i = 0; $i < $query->columnCount(); $i++) {
$col = $query->getColumnMeta($i);
$columns[] = $col['name'];
print_r($columns[$i]." "); // d_id lid la_val lo_val
但是,我无法理解阵列结构。
答案 0 :(得分:0)
阵列是二维的。外部数组有一个数字索引,表示记录(如您所谓的fetchAll()
,您可以获得多行)。内部数组实际上是两个的组合:一个使用列号作为键,另一个使用列名。这是因为fetch()
和fetchAll()
的默认选项为PDO::FETCH_BOTH
,相当于PDO::FETCH_NUM | PDO::FETCH_ASSOC
。因此,您可以使用不同的数组键获取每个列值两次。