Добавление строки в переменную добавляет "\" в функцию javascript onkey - PullRequest
0 голосов
/ 29 августа 2018

Я относительно новичок в 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 я повторяю каскадную строку, и она добавляет "\"

if(isset($_POST["query"]))
{
 $search = mysqli_real_escape_string($con, $_POST["query"]);
 echo $search; 
}

Вывод and user_name like \'%k%\' скорее это должно быть and user_name like '%k%' Итак, что я тут делаю не так.

Спасибо

Ответы [ 2 ]

0 голосов
/ 29 августа 2018

Функция mysqli_real_escape_string экранирует все кавычки, добавляя /.

Однако вы никогда не должны строить запрос в Javascript и передавать его в php. Вместо этого только пропустите строку поиска через POST.

Вы можете построить запрос в MySQL и передать переменную в MySQL.

0 голосов
/ 29 августа 2018

Поскольку mysqli_real_escape_string добавляет escape-символ (т.е. / ) в кавычки, вместо отправки части предложения where через ajax, вы должны отправлять только значение 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; 
}
...