2012-08-06 29 views
0

我一直在關注great tutorial,並得到我的代碼來處理大多數數據庫傳輸。現在我想用同樣的方法將長文本消息和圖像更新到我的服務器MySQL數據庫中,但似乎並不奏效。xcode更新mysql遠程數據庫使用PhP

NSString *strURL = [NSString stringWithFormat:@"http://mydomain.com/sync.php?name=%@&message=%@&image=%@",nameField.text, messageField.text, image]; 

然後

NSData *dataURL = [NSData dataWithContentsOfURL:[NSURL URLWithString:strURL]]; 

NSString *strResult = [[[NSString alloc] initWithData:dataURL encoding:NSUTF8StringEncoding] autorelease]; 
NSLog(@"StrResult is... %@", strResult); 

問題1:當messageField.text是一個長的文本在它們之間如「這是一個具有多達1000個字符的自由文本格式空白間隔...「,它會導致strURL也有空格,因此strResult將變爲空。

問題2:圖片是我已經保存在本地sqlite中的blob格式。我甚至不確定這種方式是否是一個好主意。但基本上我想將iPhone/iPad上的圖像直接上傳到服務器MySQL數據庫。

希望有人能幫助我解決這兩個問題中的任何一個。還是有更好更簡單的方法來更新我的服務器上的MySQL?謝謝!

回答

0

問題1:當您通過GET請求發送參數時,需要轉義參數以避免非法字符。順便說一下,您無法通過這種請求發送無限數據。對於大量數據,您應該使用POST請求。

問題2:ASIHTTPRequest是用於與遠程服務器進行通信的包裝。如果您選擇使用它(我鼓勵您這麼做),here是您需要發佈請求的文檔。還有一個例子是使用NSData將圖像發送到遠程服務器。

0

問題1:有很多的方法可以做到這一點...其中之一是,當你把它放到數據庫這樣做:

messageField.text = [messageField.text stringByReplacingOccurrencesOfString:@" " withString:@"_"]; 

Maked文字:「這是一個自由文本格式多達1000個字符...」到:‘This_is_a_free_text_format_with_up_to_1000_characters ......’

然後當你把它從數據庫中再次使用的代碼相反:

messageField.text = [messageField.text stringByReplacingOccurrencesOfString:@"_" withString:@" "]; 

這使得它˚F rom:「This_is_a_free_text_format_with_up_to_1000_characters ...」到「這是一個自由文本格式,最多可包含1000個字符......」

但是請記住這是做到這一點的一種方法......您也可以用「Something」替換「_」其他像「」或任何你想要的東西..用戶將無法鍵入......

問題2:我不知道了很多關於數據庫和圖片..但SE這:Blob

:)