2009-10-25 56 views
0

我有這種形式:jQuery的雙引號

<form name="myForm" action="#"> 
    <input type="text" name="firstField" /> 
    <input type="text" name="secondField" /> 
    <input type="submit" name="submitButton" /> 
</form> 

,我有一個Ajax請求:

$('input[type="submit"]').click(function(){ 
     var serialized = $('form').serialize(); 
     //ajax request 
     $.ajax({ 
       type : "POST", 
       url : "takeAction.php", 
       data : serialized, 
       succes : function(){ 
        alert('done'); 
       } 
     }); 
}); 

的問題是,如果我的任何字段值包含「'」,像(誰的老闆)我的Ajax請求未能完成(我試圖更新一個MySQL行,但代碼失敗,我沒有錯誤,只是我的行不更新)。我知道這是關於報價的東西,但我不知道如何去做。感謝

回答

4

的問題是在服務器上的PHP代碼,而不是在你的HTML或JavaScript。

你可能會直接寫入提交的數據值到一個SQL查詢,是?:

$query = sprintf("SELECT * FROM users WHERE user='%s'", $user); 

您必須要麼使用prepared statements,或使用mysql_real_escape_string()逃避自己的價值觀:

$query = sprintf("SELECT * FROM users WHERE user='%s'", 
        mysql_real_escape_string($user)); 
+0

如果我有$ var1 = $ _POST ['firstField'] $ var2 = $ _POST ['secondField'] $ rowId = $ _POST ['id'],我想更新我的行應該如何看待我的代碼?像這樣? $ sql = sprintf(「UPDATE table SET mysqlField_1 ='%s',mysqlField_2 ='%s'其中id ='%s'」,$ var1,$ var2,$ rowId); – kmunky 2009-10-25 14:48:21

+0

對不起,這樣? $ sql = sprintf(「UPDATE table SET mysqlField_1 ='%s',mysqlField_2 ='%s'其中id ='%s'」,mysql_real_escape_string($ var1,$ var2,$ rowId)); – kmunky 2009-10-25 14:50:32

+0

得到它,$ SQL = sprintf的( 「UPDATE表SET mysqlField_1 = '%s' 的,mysqlField_2 = '%s' 的其中id = '%s' 的」,mysql_real_escape_string(VAR1 $),mysql_real_escape_string($ VAR2),mysql_real_escape_string($ rowId)),THANKS;) – kmunky 2009-10-25 15:01:43