Php jQuery Ajax GET带引号给出了MySQL语法错误

Php 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

我将向一个单独的文件发送一个AJAX调用,用于MySQL插入查询。一切都很完美,直到有人引用(');MySQL抛出一个语法错误,即使在查询之前我使用了addslashes和mysqli\u real\u escape\u string。这个问题在Safari中出现,但在Chrome中没有

有人更了解这个具体问题以及如何解决它吗

jQuery Ajax

 $('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(){                
        }});