1

私はphpとmysqlで検索エンジンを作ろうとしていて、私は再びマッチを使っています。

しかし、私は私を夢中にさせている問題(おそらく構文)を抱えています。

コードは次のとおりです。

<?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 に答える