2011-05-11 42 views
0

如何在不使用webview的情況下對ios的phpadmin sql數據庫進行讀寫調用?iOS:與sql數據庫通信

+0

請多解釋一下。 – taskinoor 2011-05-11 16:32:11

+1

可能會有所幫助:[1](http://stackoverflow.com/questions/5765855/access-sql-database-through-php)[2](http://stackoverflow.com/questions/71088/what-is最好的方式來訪問數據庫從PHP)[3](http://stackoverflow.com/questions/2441640/using-php-to-access-a-mysql-database) – 2011-05-11 16:37:45

回答

2

除非您的服務器不安全,否則您將無法直接訪問數據庫。相反,你將不得不使用PHP作爲「橋樑」。下面是一些示例代碼,讓你開始你的PHP腳本:

<?PHP 
$con = mysql_connect("db.something.com","someuser","somepass"); 
if (!$con){die('Could not connect: ' . mysql_error());} 
mysql_select_db("db", $con); 
$result = mysql_query("SELECT * FROM table"); 
if(mysql_num_rows($result)) { 
    while($something = mysql_fetch_assoc($result)) { 
     $somethingmore[] = $something; 
    } 
    } 

header('Content-type: application/json'); 
echo json_encode($somethingmore); 
mysql_close($con); 
?> 

對於我來說,我需要它的JSON,所以我格式化JSON作爲結果。在您的應用程序中,只需發出HTTP請求即可獲取PHP腳本的結果。對我來說,就像這樣(使用ASIHTTPRequest庫):

NSURL *url = [NSURL URLWithString:@"http://www.test.com/something.php"]; 
__block ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url]; 
[request setUsername:@"user"]; 
[request setPassword:@"pass"]; 
[request setDownloadProgressDelegate:downloadProgress]; 
[request setCompletionBlock:^{ 
    [self dosomething]; 
}]; 
[request startAsynchronous]; 

然後你可以解析數據並做適當的事情。

+0

你在哪裏把PHP腳本? – SuperString 2011-05-11 20:26:22

+0

有沒有辦法將php腳本隱藏起來? – SuperString 2011-05-11 20:56:28

+0

@SuperString:PHP從不公開,因爲它始終運行在服務器端。所以,把它放在你的網絡服務器的某處。然後你可以簡單地通過http://www.yoursitehere.com/yourfolderhere/yourscripthere.php舉例來運行它。即使公衆發現鏈接,他們也無法看到您的腳本。 – 2011-05-11 23:29:50

0

我在寫一個自定義解決方案,它將利用基於IIS的WCF服務。該解決方案將允許您在Objective-C代碼中編寫SQL查詢並返回DataTable的結果集。

這有什麼可能幫助你做你需要的嗎?不同類型的Web服務會更好嗎?