Php jQuery Ajax GET带引号给出了MySQL语法错误
我将向一个单独的文件发送一个AJAX调用,用于MySQL插入查询。一切都很完美,直到有人引用(');MySQL抛出一个语法错误,即使在查询之前我使用了addslashes和mysqli\u real\u escape\u string。这个问题在Safari中出现,但在Chrome中没有 有人更了解这个具体问题以及如何解决它吗 jQuery AjaxPhp jQuery Ajax GET带引号给出了MySQL语法错误,php,jquery,mysql,ajax,syntax-error,Php,Jquery,Mysql,Ajax,Syntax Error,我将向一个单独的文件发送一个AJAX调用,用于MySQL插入查询。一切都很完美,直到有人引用(');MySQL抛出一个语法错误,即使在查询之前我使用了addslashes和mysqli\u real\u escape\u string。这个问题在Safari中出现,但在Chrome中没有 有人更了解这个具体问题以及如何解决它吗 jQuery Ajax $('body').on('keyup', '.dbDriven', function() { var val = $(this
$('body').on('keyup', '.dbDriven', function() {
var val = $(this).val();
$.ajax({url: 'dbUpdate.inc.php',type: "GET",data:
{
val: val
}
}).done(function ( data ) {
console.log(data);
});
});
dbUpdate.inc.php
$_GET['val'] = addslashes($_GET['val']);
$value = mysqli_real_escape_string($_GET['val']);
mysqli_query("UPDATE table SET column = `".$value."` WHERE id = '1'") or die(mysql_error());
使用此代码可防止SQLi:
$str = stripslashes(strip_tags(@trim(str_replace("'", "", $str))));
更容易通过url传递变量,这只适用于“GET”方法 千万不要在javascript中使用“”,如果您想直接进行POST或GET调用,这是一种不好的做法,如下所示:
$.post(URL,data,callback);
或
或者用你的方式:
$.ajax({
url: 'yoururl',
type:'POST',
success: function(){
}});
关于
你应该考虑学习SQL注入。数据不应该进入DB raw://code>addslashes确实不是适合此工作的工具,mysqli\u real\u escape\u string
是次优的,听起来好像您没有正确使用它。请阅读并了解如何使用现代API来对付它们。请注意,如果您没有显示正在使用的特定代码,你不太可能得到一个具体的答案。所以你不允许你的用户使用单引号?嗯……不。那不是这样做的。然后他可以这样使用:$str=stripslashes(strip_标记(@trim(“”))那你有什么建议?
$.get(URL,data,callback);
$.ajax({
url: 'yoururl',
type:'POST',
success: function(){
}});