我最近安装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?还是我失去了别的东西在这里。
从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);