2016-04-24 55 views
0

假設我的網絡服務器上有一個包含「數據庫」類的php文件。這個類裏面是一個公共功能,讓稱之爲「data_select」,其查詢MySql數據庫:如何將參數傳遞到Swift/iOS的PHP文件中的類函數?

public function data_select($query) { 
... 
return $rows; 

我怎麼會在「$查詢」參數傳遞給該函數從斯威夫特的iOS應用程序?

有許多關於swift的$ _POST的在線答案,但這些答案通常涉及SQL查詢,如'INSERT INTO ...',而我的情況是'SELECT ...'查詢。我似乎也找不到有關從Swift觸發類函數的任何事情,儘管我知道這一定是可能的。

我在這裏得到了錯誤的想法嗎?我知道如何從Web服務器上的php文件中提取數據,當sql查詢和所有內容都包含在同一個文件中時,但這裏查詢的參數可能不同,因此我將基本SELECT查詢作爲數據庫類的一部分可以在我的測試網站上用不同的參數調用,但我無法弄清楚如何從swift傳入查詢參數並觸發該函數。

我想我可以通過調用一個不同的php文件來調用函數,該文件包含函數的一個實例,其中包含從swift傳入的$ query參數。但是,我需要爲每個不同的'SELECT ...'查詢創建多個php文件,這種類型的功能在一個類中失敗了嗎?

回答

0

PHP是腳本語言,主要用作服務器端Web語言。 Swift可以與任何使用HTTP的服務器端語言進行通信。您可以使用任何HTTP動詞,如GET,POST, PUT等,以使用Swift從PHP發送和接收數據。

所以你想用PHP創建一個端點。您可以使用swift中的NSMutableURLRequest作爲URL參數發送數據。

看看這個link在swift中發出GET請求。

然後看看這個link來處理PHP中的GET請求。

對於您的問題的多個文件部分,您可以將這些端點中的很多全部放在一個文件中,但這是一個實施和設計選擇,取決於您希望應用程序和服務器如何流動。

+0

嘿,是啊,因爲我發佈了這個問題,通過製作一個單一的php端點文件並從http獲取sql查詢參數,我想到了這一點。下一個問題,我想它是如何安全的是從http獲取此端點中的SELECT查詢參數?如果我將參數添加到預定義的SQL查詢中,是否都很好? (例如「SELECT * FROM $ parameter_1」或者它仍然對惡意注入開放?(我假設它是...) –

+0

你不應該允許直接查詢從任何來自Swift的HTTP請求中執行。一個重大的安全問題,我強烈建議你在服務器端執行主要的輸入驗證,幸運的是你有PHP作爲你的iOS設備和你的數據庫之間的中間人你的身邊 –

+0

據我所知,所以SELECT查詢將在來自Swift傳入的HTTP參數的php endpoint文件是不是正確? –