2016-04-27 14 views
1

こんにちは私のSQLクエリでこんにちは誰かは私がそれを修正する方法を助けることができますか?'like'操作のための照合(utf8mb4_unicode_ci、IMPLICIT)と(utf8_general_ci、COERCIBLE)の不正な組み合わせ

EDIT:I JavaScriptコードを追加しました。私の問題は私のJavaScriptコードだと思います。

ERROR:

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 

TABLE

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); 
     } 
    }); 
}); 
+0

の 'data'フィールドに'% 'があるのはなぜですか? .ajax' – bugwheels94

+1

良い点、私の問題は解決していただきありがとうございます。 – CHARLI

答えて

0

dataフィールドの%$.ajaxのURLがエンコードされたとして扱われるため、サーバー側で未知の文字を与える可能性があるため、