1

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

但是我遇到了一个让我发疯的问题(可能是语法)。

这是代码:

<?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

字段设置为全文....

谢谢

4

1 回答 1

2

警告意味着您的查询失败。如果查询失败,mysql_query()则返回布尔值 FALSE,您可以使用以下命令检索错误消息mysql_error()

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

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

于 2010-12-20T21:17:36.933 回答