将字符串添加到变量会添加"\&引用;在javascript的onkey函数中

将字符串添加到变量会添加"\&引用;在javascript的onkey函数中,javascript,php,string-concatenation,Javascript,Php,String Concatenation,我对php和javascript比较陌生,我知道我犯了一些愚蠢的错误。然而,我的问题是,如果我将字符串添加到变量中,它会在“这个”之前添加“\”。 我的Javascript函数: $('#search_name').keyup(function(){ var search1 = $(this).val(); search1="and user_name like '%"+search1+"%'";//Concatenate string if(search1 != '')

我对php和javascript比较陌生,我知道我犯了一些愚蠢的错误。然而,我的问题是,如果我将字符串添加到变量中,它会在“这个”之前添加“\”。 我的Javascript函数:

$('#search_name').keyup(function(){
  var search1 = $(this).val();

   search1="and user_name like '%"+search1+"%'";//Concatenate string

  if(search1 != '')
  {
    load_data(search1);

  }
  else
  {
    load_data();   
  }
});
我有一个load_data函数,url是fetch_user.php

$(document).ready(function(){
 load_data();
 function load_data(query)
 {
  $.ajax({
  url:"fetch_user.php",
  method:"post",
  data:{query:query},
  success:function(data)
  {
    $('#result').html(data);
  }
});
}
现在在我的fetch_user.php上,我回显连接的字符串,它添加了“\”

输出为
和用户名,如\'%k%\'
相反,它应该是
和用户名,如“%k%”
那么,我做错了什么


谢谢

因为mysqli\u real\u escape\u string在引号中添加了转义字符(即/),而不是通过ajax发送where子句的一部分,所以您应该只发布
search1

$('#search_name').keyup(function(){
  var search1 = $(this).val();

  if(search1 != '')
  {
    load_data(search1);

  }
  else
  {
    load_data();   
  }
});
在PHP中:

if(isset($_POST["query"])){
 $search = "and user_name like '%".mysqli_real_escape_string($con, $_POST['query'])."%'";
 echo $search; 
}

mysqli_real_escape_string函数通过添加/来转义所有引号

但是,永远不要用Javascript构建查询并将其传递给php。而不是只通过POST传递搜索字符串


您可以在MySQL中构建查询并将变量传递给MySQL

我打赌是这样做的。
mysqli\u real\u escape\u string
我还有更多的sql查询要运行,所以这一行也是必要的,不是吗?你真的应该重新设计这一行,因为这样将sql字符串从客户端传递到服务器是不好的做法。这是SQL注入的大门,不要这样做。有人可以使用javascript并让它为SQL注入提交坏数据。相反,通过javascript传入用户名,让PHP将其正确地添加到查询中
if(isset($_POST["query"])){
 $search = "and user_name like '%".mysqli_real_escape_string($con, $_POST['query'])."%'";
 echo $search; 
}