Php mysql全文查询刚刚赢得';行不通
把我的头发拔出来,想弄清楚这里出了什么问题 创建表查询:Php mysql全文查询刚刚赢得';行不通,php,mysql,Php,Mysql,把我的头发拔出来,想弄清楚这里出了什么问题 创建表查询: CREATE TABLE search_data ( id INT( 11 ) NOT NULL AUTO_INCREMENT PRIMARY KEY , address VARCHAR( 250 ) NOT NULL , title VARCHAR( 250 ) NOT NULL , time_stamp TIMESTAMP NOT NULL, FULLTEXT (title) ) ENGINE
CREATE TABLE search_data (
id INT( 11 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
address VARCHAR( 250 ) NOT NULL ,
title VARCHAR( 250 ) NOT NULL ,
time_stamp TIMESTAMP NOT NULL,
FULLTEXT (title)
) ENGINE = MYISAM
要搜索的查询代码:
$query = " SELECT * FROM search_data WHERE MATCH (title) AGAINST ('feedback')" ;
$result = mysql_query($query, $connection);
confirm_query($result) ;
while ( $row = mysql_fetch_array($result) )
{
echo "FOUND DATA- " . $row['address'] ;
}
该表的内容如下:
由于某种原因,这不起作用(没有输出)。我就是不明白为什么。请帮忙
编辑:
确认查询:
function confirm_query($result_set)
{
if (!$result_set)
{
die("Database query failed: " . mysql_error());
}
}
Edit2:在手动运行sql查询时:我得到“MySQL返回了一个空结果集(即零行)。”
我检查了区分大小写的问题,但得到的是同样的问题你的桌子有多大<代码>全文索引在小样本量上不是很有效 预计到达时间:
添加几千个随机行。确保它们是合理不同的。全文不会发现超过50%的条目中的单词。然后重新运行查询。我敢打赌它会成功。前几天我挂断了Mysql搜索的最小长度(默认为4个字符。任何小于4的都不会返回结果)。更多信息请参见我的帖子:
更新: 我发现添加搜索修饰符“在布尔模式下”允许查询返回测试结果:
SELECT * FROM search_data WHERE MATCH (title) AGAINST ('feedback' IN BOOLEAN MODE);
将:
或die(mysql_error())
添加到每个尝试连接/执行查询的语句中。这样您至少可以看到错误。confirm_查询方法负责显示任何错误。我现在没有收到任何错误。什么是confirm\u query()
?您确定要对同一数据库连接进行查询吗?一个是mysql\u query(…)
,一个是mysql\u query(…,$connection)
,它不是很熟悉全文,但是如果使用_-bin字符集,它会区分大小写。您尝试过手动运行查询吗?返回数据表明PHP代码有问题。在任何一个地方都没有得到任何反馈意味着你的查询有问题,或者你的数据库中没有标题为“反馈”的记录。@Tomalak Geret'kal:我考虑过了。但是他的查询不起作用的原因并不是因为他的查询。这是因为他的表格中缺少行。@dnagirl:即使不是非常有效,索引肯定仍然存在?@Tomalak Geret'kal:索引存在,但里面什么都没有。@user161179:我根据你的评论扩展了我的答案。@dnagirl:你能为“全文不会发现超过50%条目中的单词”提供一个引证吗好电话。该死的菜鸟!