2012-06-06 79 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()時都需要一個記錄。