xcode使用PhP更新mysql远程数据库


xcode updating mysql remote database using PhP

我一直在学习这个很棒的教程,并将我的代码用于处理大多数数据库传输。现在,我想使用相同的方法将长文本消息和图像更新到我的服务器MySQL数据库上,但它似乎不起作用。

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将变为null。

问题2:图像是blob格式,我已经将其保存在本地sqlite中。我甚至不确定以这种方式转移是否是个好主意。但基本上,我想把图片从iPhone/iPad直接上传到服务器MySQL数据库上。

希望有人能帮我解决这两个问题中的任何一个。或者有什么更好更容易的替代方案可以在我的服务器上更新MySQL吗?非常感谢。

问题1:通过GET请求发送参数时,需要转义参数以避免非法字符。顺便说一句,你不能用这种请求发送无限量的数据。对于大量数据,您应该使用POST请求。

问题2:ASIHTTPRequest是一个用于与远程服务器通信的包装器。如果您选择使用它(我鼓励您这样做),以下是POST请求所需的文档。还有一个使用NSData将图像发送到远程服务器的示例。

问题1:有很多方法可以做到这一点。。。其中之一是当你把它放入数据库时,这样做:

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

将文本:"这是一种最多1000个字符的自由文本格式…"改为:"This_is_a_free_text_format_with_up_to_1000_characters…"

然后,当你再次将其从数据库中取出时,使用相反的代码:

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

从"This_is_a_free_text_format_with_up_to_1000_characters…"到"这是一种最多1000个字符的自由文本格式…"

但请记住,这是一种方法……你也可以用其他东西代替"_",比如"I"或你想要的任何东西。。用户不会键入的内容。。。

问题2:我对数据库和图像了解不多。。但是使用这个:Blob

:)