2012-06-06 30 views
1

我有一个表格调用访问200 thounsand条目,我需要获取所有数据并将其显示在地图上。 数据库的模式是:从php获取海量数据来自php服务器

long | lat | service 
12.00 | 34.33 | 3 
133.32 | 32.4213 | 5 
-58.3 | -3.3233 | 10 

如果我尝试查询:

SELECT long, lat, service FROM Access; 

上的SQL Server控制台我得到的所有数据,以及伟大的工程,但如果我尝试它与此php代码:

$result = mssql_query($query) or die('Query Failed ' . mssql_error()); 

我什么也没得到。没有错误,也没有数据。 我增加了我的php.ini的内存限制,我将它设置为1024M,但我得到相同的输出,没有错误,没有数据。

有什么办法从数据库中获取数以千计的条目在php数组上?我是多么不好?

感谢您的帮助。

+6

'error_reporting(E_ALL); ini_set('display_errors',1);' - 仍然没有错误?作为一个附注,在一张地图上有200,000点?我无法相信这对任何人都会有很大的用处...... – DaveRandom

+4

不管使用哪种编程语言,都不应该将大量的数据结构读入内存中,尤其是对于给定数据结构使用大量内存的PHP 。使用LIMIT和OFFSET以块读取数据。 – GordonM

+0

@GordonM SQL Server没有限制或偏移量,虽然你说的原则是健全的。请参阅[this](http://stackoverflow.com/questions/2135418/equivalent-of-limit-and-offset-for-sql-server)和[others](http://stackoverflow.com/search?q= SQL +服务器+限制)。 – DaveRandom

回答

1

mssql_query()不返回任何数据,它会在成功时返回结果资源。查看文档:http://php.net/mssql_query
您还必须使用其他函数(如http://php.net/mssql_fetch_assoc)来检索所有数据。

mssql_connect(...); // put valid server/login/password here 
$result = mssql_query($query) or die('Query Failed ' . mssql_error()); 
while($r = mssql_fetch_assoc($result)) 
{ 
    // use $r['long'], $r['lat']...to access the data of the fetched record 
} 

while()循环需要获取所有记录,每次调用mssql_fetch_assoc()时都需要一个记录。