【问题标题】:Illegal mix of collations (utf8mb4_unicode_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation 'like'非法混合排序规则 (utf8mb4_unicode_ci,IMPLICIT) 和 (utf8_general_ci,COERCIBLE) 用于“like”操作
【发布时间】:2016-04-27 15:30:01
【问题描述】:

嗨,在我的 sql 查询中,我遇到了这个错误,有人可以帮我解决这个问题吗?

编辑:我添加了我的 JavaScript 代码,我认为问题在于我的 JavaScript 代码,因为当我直接使用我的 PHP 代码而不发送 post 方法时,它也可以工作,但是使用 JavaScript 我有这样的问题。

错误:

Illegal mix of collations (utf8mb4_unicode_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation 'like' [1267]
An sql error occurred while fetching this page. Please contact an administrator if this problem persists

表格

CREATE TABLE IF NOT EXISTS `core_members` (
  `member_id` mediumint(8) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',
  PRIMARY KEY (`member_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

PHP:

    @$key = $_POST['key'];

    $result    = $db->sql_query("SELECT member_id, name FROM core_members WHERE name LIKE '%{$key}%' LIMIT 10");
        while ($row = $db->sql_fetchrow($result)) {
         ....
        }

    $db->sql_close();

JS:

$('#typeahead').keyup(function() {
    if (this.value.length < 4) return;
    var searchField = $('input.typeahead').val();
    $.ajax({
        type: "POST",
        url: "./_api.php",
        data: 'mod=searchFF&key=%' + searchField,
        success: function(data) {
            $(".tt-suggestions").html(data);
        }
    });
});

【问题讨论】:

  • 为什么$.ajaxdata字段中有%
  • 好点,谢谢你解决了我的问题。

标签: php mysql


【解决方案1】:

$.ajaxdata 字段中不需要 %,因为它可以在服务器端提供未知字符,因为 URL 将被视为已编码

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-17
    • 2015-12-07
    • 1970-01-01
    • 2010-10-30
    • 2017-10-17
    • 2010-09-16
    • 2015-06-03
    • 2015-09-16
    相关资源
    最近更新 更多