调用成员函数fetch_assoc()MySQLi-WHERE MATCH$term


Call to a member function fetch_assoc() MySQLi - WHERE MATCH $term

我正在尝试使用MySQLi使用Sphinx Search查询我的数据库。

我试图实现的是用户输入一个术语,然后用于查询我的数据库,并返回值。然而,我得到了错误:

"调用非对象上的成员函数fetch_assoc()"

$conn = new mysqli('127.0.0.1', 'null', 'null', 'null', 9306); 
if ($conn->connect_error) {
throw new Exception('Connection Error: ['.$conn->connect_errno.'] '.$conn->connect_error, $conn->connect_errno);
}
$term = $_GET['q'];
echo "$term";  

$resource = $conn->query('SELECT * FROM test1 WHERE MATCH (title, description) AGAINST ($term)');
$results = array();
while ($row = $resource->fetch_assoc()) {
$results[] = $row;
}
$resource->free_result(); 
var_dump($results);

违规行似乎是:

$resource = $conn->query('SELECT * FROM test1 WHERE MATCH (title, description) AGAINST ($term)');

如果我将线路更改为:

$resource = $conn->query('SELECT * FROM test1')

查询运行良好,但我需要查询与$term匹配,但我在这样做时遇到了问题,我不明白为什么。

您没有引用您放入查询中的内容。

即使你是,它也可能不起作用。或者,它可能只是删除您的整个数据集!如果要将用户输入的数据放入数据库,则必须小心。使用准备好的查询;如果你需要我的建议,那就放弃mysqlineneneba API,转移到PDO这样的更高级别。

$conn = new mysqli('127.0.0.1', 'null', 'null', 'null', 9306); 
if ($conn->connect_error) {
    throw new Exception('Connection Error: ['.$conn->connect_errno.'] '.$conn->connect_error, $conn->connect_errno);
}
$term = $_GET['q'];
echo "$term";  
$statement = $conn->prepare('SELECT * FROM test1 WHERE MATCH (title, description) AGAINST (?)');
$statement->bind_param("s", $term);
$statement->execute();
$result = $statement->get_result();
while ($row = $result->fetch_array(MYSQLI_NUM)) {
    $results[] = $row;
}
var_dump($results);
$resource = $conn->query('SELECT * FROM test1 WHERE MATCH (title, description) AGAINST ($term)');

这是一个MySQL查询。这就是MySQL用于运行全文查询的语法。

您正在连接到Sphinx(9306端口提供了它),因此应该运行SphinxQL

查找SphinxQL的SELECT语法。。。http://sphinxsearch.com/docs/current.html#sphinxql-选择