【问题标题】:SQL where LIKE and json_encodeSQL where LIKE 和 json_encode
【发布时间】:2014-02-05 13:18:40
【问题描述】:

我有一个大问题。

我的数据库列如下所示:

{"79":"novej nazev ","53":"","54":"0","55":"0","56":"\u0159\u0159\u0159\u0159\u0159","57":"","58":"","59":"","60":"","61":"","62":"","63":"","64":"","65":"","66":"","67":"","68":["",""],"69":"0","70":["",""],"71":["",""],"72":["",""]}

有数组和json_encode(array)

所以现在我想在数据库中搜索一些带有变音符号的单词,但 json_encode 将变音符号转换为 (\u0159\u0159\u0159\u0159\u0159)

好的,没问题,我将搜索词转换为$search_word=json_endoce(SEARCH WORD);

现在我将按脚本搜索: data LIKE '%$search_word%' 但什么都不会,所以不会得到 forim 数据库

那么我哪里做错了?

【问题讨论】:

  • 检查您的数据库使用的默认编码,您可能需要将其设置为 utf-8。
  • 我的数据库是 utf-8 .. 我尝试只搜索 "\u0159" 并且它是这样做的,但是当我搜索 "\u0159\u0159\u0159\u0159\u0159" 所以不工作为什么?
  • 你能提供整个查询吗?
  • 我使用了 NetteFramework (www.nette.org) 但查询是 $ot=json_encode($hodnoty['slovo']); $zakazky=$this->database->table('others')->where(data LIKE ?','%'.$ot.'%')
  • 你是否避开了反斜杠?试试\\u0159\\u0159\\u0159\\u0159\\u0159 因为SELECT '\u0159\u0159\u0159\u0159\u0159' 变成了u0159u0159u0159u0159u0159

标签: php sql database json sql-like


【解决方案1】:

我建议你不要使用 json_encode 转义 unicode 字符:

json_encode($value, JSON_UNESCAPED_UNICODE);

Unicode 在 MySQL 中得到很好的支持。您不需要转义这些字符。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-23
    • 2017-08-30
    • 1970-01-01
    • 2012-06-09
    • 1970-01-01
    • 2012-01-07
    • 2014-05-26
    • 2020-10-28
    相关资源
    最近更新 更多