全文索引已经在产品表上设置,但是下面使用的查询没有显示结果,它给出了错误
提供的参数不是有效的MySQL结果资源。
要添加,如果我直接在数据库上使用相同的查询,它会给我正确的结果。
$kws = $_POST['kw'];
$kws = mysql_real_escape_string($kws);
$query = "SELECT * FROM products WHERE MATCH (product_name,brand,short_desc) AGAINST (".$kws.") limit 14" ;
$res_old = mysql_query($query);
$count = mysql_num_rows($res_old);
$i = 0;
if($count > 0)
{
echo "<ul style='list-style-type: none;'>";
echo "<li align='right' style='margin-right:20px;'><div style='border-bottom:1px solid #A5ACB2;'>Searching for $kws  |<a href='search.php?search=$kws'>  See All</a></div></li>";
while($row = mysql_fetch_array($res_old))
{
echo "<li style='border-bottom: 1px solid #A5ACB2; padding:5px; margin-left:-40px;margin-right:5px;'>";
}
And so on..
知道为什么会这样吗?代码从这里继续&amp;如果我像这样使用简单的mysql查询
,它的工作完全正常select * from products where product_name like '%".$kws."%' or brand like '%".$kws."%' or short_desc like '%".$kws."%' limit 14
任何人都可以提供帮助吗?
修改的 $ kws来自不同的php文件,特别是来自文本框。这是标题&amp;中的搜索框。 ajax用于livesearch。此代码来自livesearch.php文件。
答案 0 :(得分:1)
由于在ft_min_word_len
http://dev.mysql.com/doc/refman/5.1/en/fulltext-fine-tuning.html
所以在debian中通常是/etc/mysql/my.cnf
您需要在那里设置最小长度。
确保重置字长后重新启动mysql。此外,您可能需要删除索引并重建或修复表。
更多信息可以通过不同方式在全文搜索中使用通配符。检查以下内容可能会对您有所帮助。
答案 1 :(得分:-1)
没有证据表明您发布了任何实际连接到数据库的任何代码(mysql_connect()调用)。没有它,我只能假设你没有连接到数据库。如果您没有连接,则无法执行查询。
但是我不会告诉你如何解决这个问题,因为你在代码中使用了弃用的mysql_ *函数。您需要切换到mysqli或PDO。有很多关于如何使用这些库的教程。