为什么我的单引号(')没有被编码?

时间:2014-10-28 04:35:43

标签: php ios mysql objective-c encoding

我有以下代码将 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);

?>

2 个答案:

答案 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