2009-10-25 35 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