Foros del Web » Programando para Internet » PHP »

Error select match against

Estas en el tema de Error select match against en el foro de PHP en Foros del Web. Hola amigos del foro! los molesto nuevamente, ya que tengo el siguiente problema al iniciar una busqueda, que estoy llevando a cabo. el error es ...
  #1 (permalink)  
Antiguo 02/11/2009, 11:37
Avatar de Fairy_Boy  
Fecha de Ingreso: octubre-2009
Ubicación: Kokiri Forest
Mensajes: 235
Antigüedad: 14 años, 7 meses
Puntos: 5
Error select match against

Hola amigos del foro!
los molesto nuevamente, ya que tengo el siguiente problema al iniciar
una busqueda, que estoy llevando a cabo.

el error es el siguiente.
MySQL error: 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 'Resource id #3' at line 1
lo resaltado no entiendo bien que es, ya que no me habia salido.

y el trozo del codigo es el siguiente.
Código PHP:
if ($numero==1) { 
    
//LIKE para buscar por 1 palabra.
    
$cadbusca="SELECT * FROM carpetas WHERE UPPER(Ruc_Car) LIKE '%".strtoupper($val)."%' OR Est_Car LIKE '%".strtoupper($val)."%' OR Fec_Car LIKE '%".strtoupper($val)."%'"
}else{ 
    
//MATCH AGAINST para buscar por varias palabras.
    //busqueda de frases con mas de una palabra y un algoritmo especializado 
    
$cadbusca=mysql_query("SELECT * FROM carpetas WHERE MATCH (Def_car) AGAINST ( '".($val)."' ) ORDER BY Def_Car DESC") or die("MySQL dice: ".mysql_error()); 
}
$handler=mysql_query($cadbusca) or die("MySQL dice: ".mysql_error()); 
en la primera parte esta ok, funciona bien, pero el la segunda, del match agaist me lanza el error al insertar un nombre para buscarlo.
De antemano muchisimas gracias y Saludos!
  #2 (permalink)  
Antiguo 02/11/2009, 11:54
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Error select match against

mmm..

es que estas usando el resultado de mysql_query() para hacer otro mysql_query !!!
(lee con atencion el error esta bien a la vista)

de verdad no te has dado cuenta??
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 02/11/2009, 12:02
Avatar de Fairy_Boy  
Fecha de Ingreso: octubre-2009
Ubicación: Kokiri Forest
Mensajes: 235
Antigüedad: 14 años, 7 meses
Puntos: 5
Respuesta: Error select match against

Hahahahah
ahi esta
Cita:
$handler=mysql_query($cadbusca) or die("MySQL dice: ".mysql_error());
pero lo arreglo con mysql_fetch_array
y me deja en blanco, sin errores :S
  #4 (permalink)  
Antiguo 02/11/2009, 12:08
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Error select match against

Cita:
Iniciado por Fairy_Boy Ver Mensaje
[...] pero lo arreglo con mysql_fetch_array
y me deja en blanco, sin errores :S
a caray!!

pues como tienes el código hasta ahora??

porque no se trataba de que lo "corrigieras" así, solo debías quitar la función del else que decías... ya que ahí se ejecutaba la consulta, y por eso te daba error después

Código PHP:
if ($numero==1) { 
    
//LIKE para buscar por 1 palabra.
    
$cadbusca="SELECT * FROM carpetas WHERE UPPER(Ruc_Car) LIKE '%".strtoupper($val)."%' OR Est_Car LIKE '%".strtoupper($val)."%' OR Fec_Car LIKE '%".strtoupper($val)."%'"
}else{ 
    
//MATCH AGAINST para buscar por varias palabras.
    //busqueda de frases con mas de una palabra y un algoritmo especializado 

    // AQUI estas ejecutando el SQL, cosa que no hiciste antes...
    // y cosa que no debes hacer aqui, ¿si lo entiendes??
    
$cadbusca=mysql_query("SELECT * FROM carpetas WHERE MATCH (Def_car) AGAINST ( '".($val)."' ) ORDER BY Def_Car DESC") or die("MySQL dice: ".mysql_error()); 
}
$handler=mysql_query($cadbusca) or die("MySQL dice: ".mysql_error()); 
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 02/11/2009, 12:23
Avatar de Fairy_Boy  
Fecha de Ingreso: octubre-2009
Ubicación: Kokiri Forest
Mensajes: 235
Antigüedad: 14 años, 7 meses
Puntos: 5
Respuesta: Error select match against

=/
parte del codigo lo saque de otro que encontre en la web.
y lo modifique.
si la frase a buscar tiene 1 palabra usa el select con LIKE y si tiene mas de 1 palabra
utiliza la del match against.
la del like la efectua si problemas pero al momento de tener 2 o mas palabras.
me sucede lo que he mostrado, por esta razon necesito los 2.
quizas no sea la forma que le guste a todos, pero es la que tengo para salir luego de esto jeje.
Código PHP:
$partes=explode(" ",$val); 
$num=count($partes); 
if (
$num==1) { 
    
//SI SOLO HAY UNA PALABRA DE BUSQUEDA SE ESTABLECE UNA INSTRUCION CON LIKE 
    
$cadbusca=mysql_query("SELECT * FROM carpetas WHERE UPPER(Ruc_Car) LIKE '%".strtoupper($val)."%' OR Est_Car LIKE '%".strtoupper($val)."%' OR Fec_Car LIKE '%".strtoupper($val)."%'") or die("MySQL dice: ".mysql_error()); 
}else{ 
    
//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 
    
$cadbusca=mysql_query("SELECT * FROM carpetas WHERE MATCH (Def_car) AGAINST ( '".($val)."' ) ORDER BY Def_Car DESC") or die("MySQL dice: ".mysql_error()); 
}
$row=mysql_fetch_array($cadbusca) or die("MySQL dice: ".mysql_error()); 
//mostrar resultados. 
ahi esta el codigo con lo que le cambie, pero aun sigo con lo mismo, no me despliega ningun error ni nada solo MySQL dice:
u.u
  #6 (permalink)  
Antiguo 02/11/2009, 12:28
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Error select match against

sin animos de ofender, es que has estado entendiendo todo al reves!!

así podría ir mejor tu codigo, desde un principio...
Código PHP:
$partes=explode(" ",$val); 
$num=count($partes); 
if (
$num==1) { 
    
//SI SOLO HAY UNA PALABRA DE BUSQUEDA SE ESTABLECE UNA INSTRUCION CON LIKE 
    
$cadbusca="SELECT * FROM carpetas WHERE UPPER(Ruc_Car) LIKE '%".$val."%' OR Est_Car LIKE '%".$val."%' OR Fec_Car LIKE '%".$val."%'";
}else{ 
    
//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 
    
$cadbusca="SELECT * FROM carpetas WHERE MATCH (Def_car) AGAINST ( '".($val)."' ) ORDER BY Def_Car DESC";
}
$result=mysql_query($cadbusca) or die("MySQL dice: ".mysql_error()); 
//mostrar resultados. 
$row mysql_fetch_array($result);
var_dump($row); 
y así, ¿que sale??
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 02/11/2009, 12:49
Avatar de Fairy_Boy  
Fecha de Ingreso: octubre-2009
Ubicación: Kokiri Forest
Mensajes: 235
Antigüedad: 14 años, 7 meses
Puntos: 5
Respuesta: Error select match against

entendi la idea sorry jejejej
a estas alturas del dia hasta veo doble xD
y en cuanto al codigo.
he intentado por mis medios, apartir de lo que me diste.
los primeros bien y los otros me sale bool (false)
=S
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:20.