2012-06-06 51 views
3

非常符合標題 - 我有一個腳本,目前正在從MySQL中提取最初是MSSQL的數據(另一個腳本從MSSQL數據庫提取信息並在MySQL中填充保留表)是否可以使用mssql和mysql的數據創建一個php數組?

這工作得很好,但是現在我正在進入到我真的可以直接從MSSQL數據庫和一些MySQL數據庫中提取一些信息的階段。

有沒有什麼辦法讓PHP查詢MySQL和MSSQL,並返回單個數組中的信息?

例如如果我關於10家蘋果商店銷售的所有信息都是在MySQL中進行的,而我的有關橙子的信息是在MSSQL中進行的,我可以運行一個數組來顯示上個月每家商店銷售的蘋果和桔子的數量?

感謝

回答

3

是的,但你不會得到任何東西是免費的。你需要自己編寫代碼。例如:

$all_data = array(); 

query mysql 
while(fetching mysql rows) { 
    $all_data[] = the mysql row; 
} 

query mssql 
while(fetching mssql rows) { 
    $all_data[] = the mssql row; 
} 

然後,它只是通過數組來獲取您的數據。有多種方法來構建數據,因此您需要構建一個適合您需求的數組。

PHP庫中有一些用於處理數組的有用工具。我的最愛是array_maparray_filterusort。將此與anonymous functions結合在一起,您可以爲構建自己的過濾和排序奠定堅實的基礎。

+0

這就是我真的需要繼續 - 我真的不想花太多時間嘗試它,而不知道它實際上可能的第一!謝謝你的幫助 – franglais

2

沒有從發起兩種連接方式,運行的每個連接上查詢阻止你,然後將結果融合在一起。

當然,您不能執行連接,因爲兩臺服務器無法相互通信以給出最終結果;這一切都取決於你:)

此外,總查詢執行時間將兩個查詢的時間加在一起,除非您使用運行異步查詢閃亮的新mysqli功能。

2

首先,建立到mssql和mysql的連接。 獲取mssql和mysql的結果。 然後使用array_combine合併兩個數組以獲得單個數組。

0

您可以考慮的一種解決方案是使用distributed queries。您可以設置從SQL Server到MySQL的linked server,並使用OPENQUERY()或類似方法一起查詢兩個服務器。通過這樣做,您可以直接在一個查詢(在MSSQL上執行),甚至是來自MSSQL的MySQL表中加入MySQL和MSSQL表。

但是,鏈接的服務器配置起來可能會很尷尬,並且性能並不總是可預測的,所以您必須仔細測試以確定它是否a)對您的性能足夠好,並且b)維護的時間少於您自己的PHP代碼。

相關問題