我是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..)");
然后我会收到此错误;Unknown column 'vleugel'
in ' where 子句'
我尝试了第三种变体,AGAINST (.$ keywords IN BOOLEAN MODE)")
,结果出现错误消息,您的 SQL 语法有错误;检查对应池塘的手册到您的 MySQL 服务器版本,以获取在第 2 行“+vleugel +staart.IN BOOLEAN MODE)”附近使用的正确语法
对于所有测试,我在表单中输入了 value vleugel 模型。
有什么想法可以解决这个问题。我不知道这是否重要,但我在这个项目中使用 Dreamweaver 和 mysql 版本 5.5.24。 提前致谢
最佳答案
尝试用 {$keywords} 替换它。
"SELECT omschrijving FROM `rapporten` WHERE MATCH (`rapnaam`, `omschrijving`) AGAINST (\"{$keywords}\" IN BOOLEAN MODE)"
关于PHP、mysql boolean 搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16908807/