Ver Mensaje Individual
  #1 (permalink)  
Antiguo 10/03/2008, 11:41
Avatar de jaronu
jaronu
 
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
como hacer una busqueda a base datos pasando mas de una palabra clave

Hola utilizo este codigo encontrado en el foro, para hacer un buscador a base de datos,
solo ha de buscar en los campos de la BD

name
description

cuando pongo solo una palabra el script fuunciona,
pero cuando pongo dos palabras me da error.

Alguen sabe que hago mal en la consulta?

Código PHP:

$busqueda
=$_POST['palabra'];
 echo 
$busqueda//imprime bien la variable
 
 
if ($busqueda<>''){ 
  
//CUENTA EL NUMERO DE PALABRAS 
  
$trozos=explode(" ",$busqueda); 
  
$numero=count($trozos); 
  if (
$numero==1) { 
    
//SI SOLO HAY UNA PALABRA DE BUSQUEDA SE ESTABLECE UNA INSTRUCION CON LIKE 
    
$_pagi_sql="SELECT name, description FROM archivos WHERE description =1 
      AND name LIKE  '%$busqueda%' OR description LIKE  '%$busqueda%' ORDER  BY name ASC"

  } elseif (
$numero>1) { 
    
//SI HAY UNA FRASE SE UTILIZA EL ALGORTIMO DE BUSQUEDA AVANZADO DE MATCH AGAINST 
    //busqueda de frases con mas de una palabra y un algoritmo especializado 
    
$_pagi_sql="SELECT  name, description MATCH (  name,description ) 
      AGAINST (  '$busqueda' ) FROM archivos WHERE 
      MATCH ( name,description ) AGAINST (  '$busqueda' ) ORDER  BY name ASC"

  } 
  
$_pagi_result mysql_query($_pagi_sql $conexion) or die ( mysql_error() ); 
y este es el error
Código PHP:

You have an error in your SQL syntax
check the manual that corresponds to your MySQL server version for the right syntax to use near 'MATCH ( name,description ) AGAINST ( 'manual cromoterapia' ) FROM arch' at line 1 
He buscado en el manual de php en español sobre la sintaxis de Mysql pero esque no me entero de donde esta el fallo.

Gracias.