【问题标题】:Unable to search against database correctly with '无法使用 ' 正确搜索数据库
【发布时间】:2012-09-26 21:44:48
【问题描述】:

我在搜索 MySQL 数据库时遇到问题。数据库排序规则为utf8_general_ci,表排序规则为latin1_swedish_ci。我的问题是这样的:

用户条目存储为(保护隐私的假名)T'quila Smith,真实名称为T'quila Smith

我的 Web 应用程序需要能够按名称正确搜索该用户,但搜索的名称为 T'quila,而不是 T'quila。我尝试过使用$student_name = str_replace("'", "'", $student_name);,它(在使用echo 测试时)会按应有的方式打印出T'quila。但是,数据库无法通过该搜索在数据库中找到该用户。

任何人都可以提供一些帮助吗?我一直不知道该怎么做。我已经研究了字符集(我认为这可能是问题),但我似乎无法让它工作。非常感谢任何可以帮助我的人!

【问题讨论】:

  • 您说史密斯先生的姓名以实体形式存储在表中(使用 ' 而不是撇号)。你怎么知道?如果您搜索 WHERE NAME LIKE '%39%' 会发生什么?当您搜索 WHERE NAME LIKE '%\'%' 时会发生什么? WHERE NAME LIKE '%Smith' 怎么样?史密斯先生的名字会在这些情况下出现吗?注意:我不建议您在生产中使用这种搜索,而只是为了确保您知道名称中的撇号是如何存储的。这些爱尔兰风格的名字是一个臭名昭著的脖子痛。祝你好运。
  • 谢谢奥利。这让我更接近获得正确的结果。我想我现在需要的只是一些时间来修改这个应用程序,我就能得到它。感谢您的帮助!

标签: php mysql web-applications utf-8 character-encoding


【解决方案1】:

在这里操作(不同的帐户...不在工作)。我可以通过 PHPMyAdmin 访问数据库,所以我可以看到表中的所有行。由于我现在不在工作,我无法尝试您的建议,但我稍后会尝试。不过感谢您的建议!

【讨论】:

    猜你喜欢
    • 2019-05-28
    • 1970-01-01
    • 2014-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多