我有以下代码将 UITextView 文本转换为编码的 NSString ,我可以将其与其他内容一起插入到我的数据库中。插入工作完全正常,除非有单引号...然后它不起作用。当我 NSLog 编码的 NSString 时,'甚至没有变成任何东西。因此,当它去做web服务器请求时,url具有'仍然在它导致它失败...为什么单引号不会被编码?这是我的代码(我对php也不是很好):
的iOS:
NSString *encodedString = (NSString
*)CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(
NULL, (CFStringRef)self.textView.text, NULL, (CFStringRef)@"!*'();:@&=+$,/?%#[]", kCFStringEncodingUTF8 ));
NSString *strURL = [NSString stringWithFormat:@"http://example.org/postText.php?thePost=%@&byUserID=%@&nickname=%@", encodedString, [UniqueUserIdentification getUserID], nickname];
PHP:
<?php
$con=mysqli_connect("editout","editout","editout","editout");
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$thePost = $_GET["thePost"];
$byUserID = $_GET["byUserID"];
$nickname = $_GET["nickname"];
mysqli_query($con,"INSERT INTO MyTable
VALUES ('$thePost', '$byUserID', '$nickname', 0, 0)");
mysqli_close($con);
?>
答案 0 :(得分:0)
你的SQL错了。
$thePost = $_GET["thePost"];
您为$thePost
分配了GET数据,但这是网址解码。
例如,$thePost
是&#34; Let's go!
&#34;,因此您的SQL变为:
INSERT INTO MyTable
VALUES ('Let's go', '$byUserID', '$nickname', 0, 0)"
显然存在语法错误。
您需要使用mysqli_real_escape_string转义字符串。
看看this post。
答案 1 :(得分:-1)
在客户端,代码&#39;至%27,这是正确的。但是在服务器中,你的sql使用错误。urlencode