【问题标题】:Trying to get property of non-object on search result php试图在搜索结果php上获取非对象的属性
【发布时间】:2018-06-01 19:04:17
【问题描述】:

SQL 查询:

$sql=$db->query("SELECT *, MATCH(keywrd) AGAINST('%$keyword%')+1 as score FROM `web_information` ORDER by score DESC");

php代码:

<?php if(isset($sql) && count($sql) && ($sql->num_rows)) :  ?>

我收到错误“注意:试图在上面的行中获取非对象的属性”

【问题讨论】:

  • $sql 可能是 false 因为查询出错了。 echo $db-&gt;error; 显示什么?
  • 嗨@Barmar。它向我显示“找不到与列列表匹配的 FULLTEXT 索引”
  • 那么问题应该很明显了。如果您没有在列上创建全文索引,则不能在列中进行全文搜索。
  • 尝试打印 $sql 对象中的内容。

标签: php mysqli


【解决方案1】:

一旦您在要匹配的一列或多列上有FULLTEXT 索引,您可以在WHERE 条件中使用MATCH...AGAINST,例如

SELECT * FROM table_name WHERE MATCH (columns) AGAINST (keywords)

但是如果列没有与列列表匹配的FULLTEXT 索引,您将收到错误“找不到与列列表匹配的 FULLTEXT 索引”。您可以使用

FULLTEXT 索引添加到您的列中
ALTER TABLE table_name ADD FULLTEXT search (column1, column2);

错误本身表示列列表需要匹配FULLTEXT索引:https://www.tinywebhut.com/can-t-find-fulltext-index-matching-the-column-list-mysql-error-28

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-02
    • 2013-12-24
    相关资源
    最近更新 更多