0

我是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..)");Then 我会收到此错误;Unknown column 'vleugel'在 'where 子句' 第三个变体中,我尝试了这个,AGAINST (.$ Keywords IN BOOLEAN MODE)")导致错误消息,You have an error in your SQL syntax; check the manual That corresponds ponds to your MySQL server version for the right syntax to use near '+vleugel +staart. IN BOOLEAN MODE) 'at line 2 对于所有测试,我在表单中输入了 value vleugel 模型。

任何想法如何解决这一问题。我不知道这是否重要,但我在这个项目中使用了 dreamweaver 和 mysql 版本 5.5.24。提前致谢

4

1 回答 1

0

尝试用 {$keywords} 替换它。

"SELECT omschrijving FROM `rapporten` WHERE MATCH (`rapnaam`, `omschrijving`) AGAINST (\"{$keywords}\" IN BOOLEAN MODE)"
于 2013-06-04T03:42:24.287 回答