如何使用ā,è从数据库中搜索值

时间:2018-08-13 18:05:58

标签: javascript php mysqli

我要搜索ā,è..这个特殊字符并显示在页面中,但是当我搜索值时,它将转换为不同的字符。正在获取“未找到结果

我的html:

<form action="" method="GET">
  <input type="text" name="name" id="name">
  <input type="submit" name="submit">
</form>

这是我的php代码

    <?php
$conn = mysqli_connect("localhost","root","","test2");

// Check connection
if (mysqli_connect_errno()){
  echo "Failed to connect
   to MySQL: " . mysqli_connect_error();
}

if(isset($_GET['submit'])){
  $ksl = $_GET['name'];
  $sql = "SELECT * FROM app WHERE texts LIKE '%$ksl%' ";

  if($result = mysqli_query($conn, $sql)){
      if(mysqli_num_rows($result) > 0){
          while($row = mysqli_fetch_array($result)){
            echo $row['texts'];
          }
      } else{
          echo "No records matching your query were found.";
      }
  } else{
      echo "ERROR: Could not able to execute $sql. " . mysqli_error($conn);
  }

  // Close connection
  mysqli_close($conn);

}


?>

我的js代码

<script type="text/javascript">
  $(document).ready(function() {
    $('#name').keyup(function(){
      var gk = $(this).val();

      $.ajax({
        type: 'GET',
        url: 'test.php',
        data: {
          'submit': true,
          'name' : gk,
        },
        success: function (data) {
            $('#testa').html(data);
        }
      });
    })
  });
</script>

如何在搜索中使用特殊字符?

1 个答案:

答案 0 :(得分:0)

据我所知,您无法在mysql中执行此操作。某些解决方法是使用HEX值来搜索这些重音,这是我很久以前使用的一种解决方法,虽然这不是理想的方法,但它确实可以做类似的事情

SELECT * FROM `app` WHERE `text` REGEXP '(s|š|Š|[sšŠ])(i|í|Í|[iíÍ])(r|ŕ|Ŕ| 
.   ř|Ř|[rŕŔřŘ])(e|é|É|ě|Ě|[eéÉěĚ])(n|ň|Ň|[nňŇ])(A|a|á|Á|ä|Ä|0|[AaáÁäÄ0])'

或者通过更多的研究,我找到了一种使用这种方法的方法

SELECT whateverYouWant
FROM app 
WHERE text <> CONVERT(columnToCheck USING ASCII)
  

CONVERT(col USING charset)函数会将不可转换的字符转换为替换字符。这样,转换后的文本和未转换的文本将不相等。

请查看此链接以找到有关此信息的更多信息:https://dev.mysql.com/doc/refman/5.7/en/charset-repertoire.html