2012-08-01 43 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

相關問題