【问题标题】:Prepared Statement in PHP for MATCH AGAINST not working在 PHP 中为 MATCH AGAINST 准备的语句不起作用
【发布时间】:2018-09-06 11:14:45
【问题描述】:

我正在尝试在php 中执行以下MATCH AGAINST,但它没有给出任何结果。

当我直接在phpmyadmin 中执行相同的 Select 语句时,它可以工作,但是在使用准备好的语句的 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)

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

【问题讨论】:

  • 定义“不工作”...?!
  • 根据您发布的代码,您实际上并没有执行查询
  • 与您的 phpmyadmin 查询相反,您准备的查询也与 number 匹配……我们应该如何确定这是否会造成问题?
  • 您是否在检查错误?
  • @Zain $firstname .= '%';...

标签: php mysql sql phpmyadmin


【解决方案1】:

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

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

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

【讨论】:

  • 这是对黑暗的大胆尝试……
  • 嗯.. 你甚至帮助了我:)
  • @deceze 可能是关于元数据的讨论,但我想知道你对那种“在黑暗中大胆刺伤”的立场
  • @Thomas 为什么不呢? 酥油,如果它真的对 OP 有帮助,那就给他们更多的权力。首先,这个问题应该被关闭,因为它不清楚。如果您想尝试回答不清楚的问题,我不在乎。
  • 很高兴能为您提供帮助。干杯!
猜你喜欢
  • 2014-09-28
  • 2013-03-24
  • 2015-10-11
  • 1970-01-01
  • 2012-06-07
  • 2011-11-10
  • 1970-01-01
  • 1970-01-01
  • 2015-09-19
相关资源
最近更新 更多