2013-10-21 60 views
0

我在从PostgreSQL数据库的SQL查询中读取关联数组时遇到了问题。PHP脚本没有正确索引我的PostgreSQL数组

因此,这里是我的数据库:

ID | NAME | .... 
1 | CARS | 
2 | BIKES| 
3 | TRAINS | 

现在我有我想从该查询抓住一些数据并将其编码为JSON用于移动设备的PHP脚本。

下面是脚本:

$res = pg_query("SELECT * FROM projects"); 

/* FETCHES THE RESULT OF THE SQL QUERY WHICH GETS THE NAME OF EACH PROJECT */ 
while($row = pg_fetch_assoc($res)) 
{ 
    $output[]=$row['name']; 
    print (json_encode($output)); 
} /* CONVERTED ON MOBILE PLATFORM */ 

pg_close(); 

现在我越来越显示副本,并从文件(下图)的输出粘贴的结果:

["Cars"]["Cars","Bikes"]["Cars","Bikes","Trains"] 

我可以清楚地看到,我的算法对记录进行索引是一种1,2,1,2,3种方式。有没有人有关于如何解决这个问题,并得到这个输出的任何忠告:

["Cars"]["Bikes"]["Trains"] 
+0

如果将'$ output []'更改为'$ output',会发生什么? – mavroprovato

+0

@mavroprovato它产生“汽车”,“自行车”,“火车”没有'[]'!我相信这是我想要的,但他们是分开的价值观还是个人价值观?我需要他们分开,因为我在Android设备上安装微调器! – WebDevDanno

回答

1

你应该只打印排列在最后,这是完全填充后:

$res = pg_query("SELECT * FROM projects"); 

/* FETCHES THE RESULT OF THE SQL QUERY WHICH GETS THE NAME OF EACH PROJECT */ 
while($row = pg_fetch_assoc($res)) 
{ 
    $output[]=$row['name']; 
} /* CONVERTED ON MOBILE PLATFORM */ 

print (json_encode($output)); 

pg_close(); 

或者,你可以如果需要单独输出,请重新初始化$ output数组。取决于你想实现什么:

$res = pg_query("SELECT * FROM projects"); 

/* FETCHES THE RESULT OF THE SQL QUERY WHICH GETS THE NAME OF EACH PROJECT */ 
while($row = pg_fetch_assoc($res)) 
{ 
    $output = array(); 
    $output[]=$row['name']; 
    print (json_encode($output)); 
} /* CONVERTED ON MOBILE PLATFORM */ 

pg_close(); 
+0

第二个解决方案建议给出结果'[“Cars”,“Bikes”,“Trains”]'这是一个数组中的三个独立值。干杯:) – WebDevDanno

+0

当然,祝你好运。我会编辑答案以突出所需的解决方案。 – 2013-10-21 13:07:19