我有一个结构如下的 MySQL 表:
$sql = "CREATE TABLE test(
id INT NOT NULL,
title VARCHAR(512) NOT NULL COLLATE utf8_general_ci,
body TEXT NOT NULL COLLATE utf8_general_ci,
dateStored VARCHAR(32) NOT NULL COLLATE utf8_general_ci,
fileName VARCHAR(128) NOT NULL COLLATE utf8_general_ci,
FOREIGN KEY(id) REFERENCES `database`.`parent`(id)
);";
Run Code Online (Sandbox Code Playgroud)
我的存储引擎是 MYISAM。
现在,当我想body用MATCH-在字段中搜索时AGAINST,没有结果......
这是我的尝试:
$sql2 = "SELECT * FROM database.test
WHERE MATCH(body) AGAINST('?')";
$prepare = $pdo->prepare($sql2);
$prepare->execute( array( $pattern ) );
$fetch = $prepare->fetchAll();
Run Code Online (Sandbox Code Playgroud)
这看起来很基本,但我的代码仍然不起作用。你能告诉我我的代码有什么问题吗?
这是因为我有一个引用另一个表的字段吗?
小智 5
添加更多数据。默认情况下,MySQL 将忽略表中 50% 或更多行中的任何单词,因为它认为它是一个“干扰”词。
由于表中的行很少,因此经常达到 50% 的限制是很常见的(即,如果您有两行,则每个单词至少占行的 50%!)。