首页 > 解决方案 > 在 PHP 中为 MATCH AGAINST 准备的语句不起作用

问题描述

我正在尝试执行以下操作MATCH AGAINSTphp但没有结果。

当我直接执行相同的 Select 语句时,phpmyadmin它可以工作,但是在带有准备好的语句的 php 中它不会。它没有给出任何结果。我没有收到任何错误,但没有给出任何结果。

$statement = $DB->prepare('SELECT *  FROM users
                           WHERE firstname LIKE ?
                           AND lastname LIKE ?
                           AND MATCH (firstname, lastname) AGAINST (?  IN BOOLEAN MODE)');

$statement->bind_param('sss',   $firstname, $lastname,  $searchString);
$statement->execute();
$result = $statement->get_result();
$statement->close();

当我将以下内容放入 phpmyadmin 时,它可以正常工作,但不能超过 php

Select * FROM users WHERE firstname LIKE "d%" AND lastname LIKE "f%" and MATCH (firstname, lastname) AGAINST ("Jonny" IN BOOLEAN MODE)

准备好的语句看起来如何?它的正确语法是什么?

标签: phpmysqlsqlphpmyadmin

解决方案


根据我对您的phpmyadmin查询的理解,您没有使您的变量适合LIKE. 所以在像这样绑定之前连接你的变量

$firstname .= '%';
$lastname .= '%';

在这之后告诉我会发生什么。谢谢!


推荐阅读