匹配问题

时间:2010-12-20 21:15:20

标签: php mysql match against

我正试图用php和mysql制作一个搜索引擎,并且我正在使用match agains。

然而我有一个问题(可能是语法)让我发疯。

以下是代码:

<?php 
$busqueda= $_GET["words"];
require("conectdb.php");

if ($busqueda<>''){ 

   $trozos=explode(" ",$busqueda); 
   $numero=count($trozos); 
  if ($numero==1) { 

   $cadbusca="SELECT * FROM post WHERE contenido LIKE '%$busqueda%' OR titulo LIKE '%$busqueda%'"; 
  } elseif ($numero>1) { 

    $cadbusca="SELECT * , MATCH ( 'titulo', 'contenido' ) AGAINST ( '$busqueda' )  AS Score FROM post WHERE MATCH ( 'titulo', 'contenido' ) AGAINST ( '$busqueda' ) ORDER BY Score DESC";

} 

$result=(mysql_query($cadbusca)); 
while($info = mysql_fetch_array($result))
{ 
  echo $info["id"]." ".$info["titulo"]." ".$info["contenido"]; 
} 
}
?> 

这是多个单词搜索后的错误:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home1/foodbook/public_html/search/wordsearch.php on line 19

字段设置为全文....

THX

1 个答案:

答案 0 :(得分:2)

警告表示您的查询失败。如果查询失败,mysql_query()返回布尔值FALSE,您可以使用mysql_error()检索错误消息:

$res = mysql_query($cadbusca);
if ($res === FALSE) {
      die("Query failed: " . mysql_error());
}

您的代码假设查询成功并尝试从该false值获取行,该值不是有效的结果句柄。假设查询成功是不好的做法。即使查询字符串在语法上是有效的,也有很多其他方法可以发生故障,并且您应该检查每一步的成功(或失败)。