我想Where Match
使用mysqli prepared statements
. 问题是Boolean Mode AGAINST values
,
一般:(+value1 +value2 +value IN BOOLEAN MODE)
但问题是我不能在准备好的语句中使用它,例如(? ? ? IN BOOLEAN MODE)
因为值的数量会不同,它不是固定的。
我试过这段代码:
$keywords = explode(" ", $SearchResults->squery);
foreach($keywords as $key=>$value)
{
$keywords[$key] = '+'.$value;
}
$keywords = implode(",", $keywords);
$dbconnect = new mysqli($host, $user, $pw, $db);
$stmt = $dbconnect->prepare("SELECT `postid` FROM `espina5_jotecodb`.`posttd` WHERE MATCH (`title`) AGAINST (? IN BOOLEAN MODE)");
$stmt->bind_param('s', $keywords)
if($stmt->execute())
{
$stmt->bind_result($col1);
while ($stmt->fetch())
{
echo $col1."<br>";
}
}
$dbconnect->close();
$keywords
duringbind_param
将有一个字符串包含+value1 +value2 +value3
上面代码的问题在于它不是单独读取值,而是作为一个整体读取值,我认为这是因为在?
准备语句时是单一的,而s
在绑定期间是单一的。我以为我可以那样做,猜我错了。
所以无论如何,上面的代码将导致读取第一个值并忽略后续值,因为该值被视为单个值。所以我在问如何使用布尔模式的动态值实现准备好的语句查询?我应该求助于每个值单独查询数据库吗?