2012-08-01 44 views
0

为什么当我在textarea中输入“+ -1-23 $%^ & sdfsdf /> <”但它只在数据库中保存“-1-23 $%^”?为什么pdo不会将+和&的符号保存到数据库中?

代码:

function postingMsg(){ 
     $('.error').hide(); 
    var messageposting2= $("textarea#messageposting").val(); 
     var dataString = 'messageposting2='+ messageposting2; 
     $.ajax({ 
      type: "POST", 
      url: "note-send.php", 
      data: dataString, 
      success: function(msg) { 
     msg = parseFloat(msg)  
      } 
     }); 
     return false; 
} 

if ((isset($_POST['messageposting2'])) && (strlen($_POST['messageposting2']) > 0)) { 
    $messageposting3 = $_POST['messageposting2']; 

    $sql = "UPDATE users 
      SET my_note=? 
      WHERE user_id=?"; 
    $q = $conn->prepare($sql); 
    $q->execute(array($messageposting3, $_SESSION['user_id'])); 

    echo "1"; 
} else {echo "0";} 
+0

'$ messageposting3'的值是多少?你提到你输入的内容,但是你没有提到脚本收到的内容。 – Matt 2012-08-01 15:12:21

+0

当然是“+ -1-23 $%^&sdfsdf /><” – zac1987 2012-08-01 15:19:14

+1

“当然”,如“DUH,这就是当我执行变量的'回声'或'我没有'实际上打印出来了,所以我认为这就是它的原因,因为这就是我输入的内容“? – Matt 2012-08-01 15:20:06

回答

3

它无关,与PDO或数据库。在通过Ajax发送之前,您必须对您的字符串进行网址编码。

var dataString = 'messageposting2='+ encodeURIComponent(messageposting2); 
+0

WOW。我以前从来不知道这件事。从你那里学习新的东西。谢谢。 – zac1987 2012-08-01 15:27:39

相关问题