如何使用PDO bindParam为SphinxSearch 3?

问题描述 投票:0回答:1

我最近安装SphinxSearch 3.1.1在Ubuntu 18和我目前正在创建的使用PHP 7.2的代码片段。我有麻烦bindParam工作。

这里是我的代码:

$mytest = "hello";
$query = $conn->prepare("SELECT *, weight() FROM test WHERE MATCH('\"@title :mytest \"/1')");
$query->bindParam(':mytest', $mytest, PDO::PARAM_STR);
$query->execute();

当我尝试执行它,结果是空的。

然而,当我试图直接把$ mytest的声明里,我得到预期的结果

$query = $conn->prepare("SELECT *, weight() FROM test WHERE MATCH('\"@title". $mytest ."\"/1')");

这是否意味着,狮身人面像不匹配()函数中支持bindParam?还是我失去了别的东西在这里。

pdo sphinx sphinxql
1个回答
0
投票

http://php.net/manual/en/pdo.prepare.php注意

参数标记可以代表一个完整的数据只包含文字。文字,也不关键字,也不标识符,也不管任意查询部分既不部分可以用参数约束。

也就是说,你想一个字符串内绑定。在实际意义上PHP(或MySQL服务器)WLL加载了“围绕价值作出声明。

......实际上最终会与sphinxql查询:

SELECT *, weight() FROM test WHERE MATCH('"@title 'hellow' "/1')

这显然是错误的!


而不是整个字符串字面量绑定。

$query = $conn->prepare("SELECT *, weight() FROM test WHERE MATCH(:mytest)");
$query->bindParam(':mytest',  '"@title '.$mytest.'"/1', PDO::PARAM_STR);

虽然这看起来像一个无效的狮身人面像“扩展语法”查询时,@field限定符,应该是仲裁外,

$query->bindParam(':mytest',  '@title "'.$mytest.'"/1', PDO::PARAM_STR);
© www.soinside.com 2019 - 2024. All rights reserved.