Php 用单引号搜索MySql全文索引

Php 用单引号搜索MySql全文索引,php,mysql,mysqli,prepared-statement,Php,Mysql,Mysqli,Prepared Statement,我试图根据全文索引搜索带有单引号的字符串: select * from gems where MATCH (gems.title, gems.descr) AGAINST ('"winter\'s discontent"' IN BOOLEAN MODE) 中的答案表明它应该起作用,但事实并非如此。当我将该示例从MyIsam更改为InnoDB时,它不再有效。即使在MyIsam中,上面的查询也会在“winter”上返回一个匹配 有什么想法吗 我使用的是mySql 5.6.11 InnoDB

我试图根据全文索引搜索带有单引号的字符串:

select * 
from gems 
where MATCH (gems.title, gems.descr) AGAINST ('"winter\'s discontent"' IN BOOLEAN MODE)
中的答案表明它应该起作用,但事实并非如此。当我将该示例从MyIsam更改为InnoDB时,它不再有效。即使在MyIsam中,上面的查询也会在“winter”上返回一个匹配

有什么想法吗

我使用的是mySql 5.6.11 InnoDB

可以找到sqlFiddle,但它也不起作用。它包含以下内容:

CREATE TABLE gems 
    (
     id int auto_increment primary key, 
     title varchar(20), 
     descr varchar(100),
     FULLTEXT KEY `ft_title_descr` (`title`,`descr`)      
    );


INSERT INTO gems
(title, descr)
VALUES
('Post 1', 'Once upon a time'),
('Post 2', 'My winter\'s discontent');

做了更多的谷歌搜索-似乎这是一个报告的MySQL错误。我将mySQL版本升级到5.6.20,这解决了问题。

Hmm有趣的是,这可能与引擎有关。尝试以myisam的形式创建表,在这里我创建了fiddle,它现在可以工作了,不要使用双引号,我已经删除了它。双引号的原因是它是一个短语,可能包含多个单词。我只是在示例中简化它。MyIsam会起作用——某种程度上它也和winter相匹配——但不是这张桌子的选项。