PHP,mysql是一个布尔搜索

时间:2013-06-04 02:16:12

标签: php mysql full-text-search boolean

我是PHP的新手,希望有人能帮助我

我已经很远但现在我被卡住了。 我一步一步完成了学习过程,因此下面的代码中有一些控制规则。 我遇到的问题是运行MySQL查询,特别是在MATCH AGAINST函数中。 正如您在代码中看到的,我在AGAINST的查询中添加了一个固定值。这非常有效。 我通过在phpAdmin中键入查询然后在运行查询“创建PHP代码”后单击生成的查询。

<?php
// not set?
if(!isset($_POST['omschrijving2'])) exit('nothing posted');
// get posted values
$keywords = $_POST['omschrijving2'];
$qualifier = $_POST['qualifier'];
//do the search and search using all the terms if 'all'
if ($qualifier == "all")
{
$words=explode(" ",$keywords);
//add + operator to each keyord
$keywords = '';
foreach($words as $word) {
$keywords .= "+".$word." ";
}
echo $keywords; // '+vleugel +model '
$keywords = rtrim($keywords); // remove last space
echo '<br>'.$keywords; // '+vleugel +model'
echo "is de keyword waarde";
}
else
{
echo "geen waarde in keywoord";
}
mysql_connect("localhost","xxx","xxx","xxx");
mysql_select_db('museum');
$query = mysql_query("SELECT omschrijving FROM `rapporten` WHERE MATCH (`rapnaam` ,       `omschrijving`)\n"
. "AGAINST (\"+vleugel +model\" IN BOOLEAN MODE) ");
if(!$query) {
echo mysql_error()."<br>$query<br>";
}
else
{
while($row = mysql_fetch_array($query)){
echo "<br />";
echo $row['omschrijving'];
echo "<br />";
}
}
?>

我得到的问题是当我在查询中替换动态值“AGAINST('$ keywords'IN BOOLEAN MODE)中的固定值时,则没有收到任何值。 如果我将值更改为“AGAINST('。$ keywords。'IN BOOLEAN MODE ..)”);然后我得到这个错误; 'where子句'中的未知列'vleugel' 第三个变体我试过这个,“反对(。$ BOOLEAN模式中的关键字”),导致错误信息,你的SQL语法有错误;查看手册对应于您的MySQL服务器版本的池塘,以便在'+ vleugel + staart附近使用正确的语法。在BOOLEAN模式中)'在第2行 对于所有测试,我在表单中输入了值vleugel模型。

任何想法如何解决这个问题。我不知道这是否重要,但我使用Dreamweaver和mysql版本5.5.24进行此项目。 提前致谢

1 个答案:

答案 0 :(得分:0)

尝试将其替换为{$ keywords}。

"SELECT omschrijving FROM `rapporten` WHERE MATCH (`rapnaam`, `omschrijving`) AGAINST (\"{$keywords}\" IN BOOLEAN MODE)"