我似乎遇到了代码问题,无法追踪问题。我想在我的数据库中搜索多个列,但是我收到了一个错误报告。
我改变了这样的表
"ALTER TABLE products ADD FULLTEXT alltext (`title`, `cat`, `status`, `description`, `tags`)";
并且还将默认引擎更改为MyISAM
但是当我通过搜索我的搜索框来运行此查询时,我收到了错误。
$sql="SELECT * FROM products as p INNER JOIN amenities as a ON p.product_id=a.product_id WHERE MATCH(p.title,p.cat,p.status,p.description,p.tags) AGAINST ('$search' )";
mysqli_query($con,$sql);
其他条件如下......
如果我的搜索词在任何行中,哪个应该给我结果..但它返回错误的查询错误。还尝试在'$ search'之后添加一个IN BOOLEAN ...即
$sql="SELECT * FROM products as p INNER JOIN amenities as a ON p.product_id=a.product_id WHERE MATCH(p.title,p.cat,p.status,p.description,p.tags) AGAINST ('$search' IN BOOLEAN)";
如果表格行中存在明显匹配的术语,则不会产生任何结果。
这是我的搜索变量
$search = mysqli_real_escape_string($con, $_POST['q']);
对此有任何帮助将不胜感激。
答案 0 :(得分:0)
从我在这里看到的很难给你一个直接的解决方案,但我会遵循这个策略:
$search
变量。BOOLEAN
查询使用特殊语言语法,只有在NATURAL LANGUAGE
模式下获得良好结果后才能尝试。FULLTEXT
索引,或者是否会抱怨索引创建。只是要检查一下。全文索引只能用于MyISAM表。 (在MySQL 5.6及更高版本中,它们也可以与InnoDB表一起使用。)只能为CHAR,VARCHAR或TEXT列创建全文索引。