Consulta mysql con instruccion like de mas de una palabras

dmo
27 de Febrero del 2006
Hola a todos, gracias por leer mi mensaje, mi problema es el siguiente:

Tengo una consulta en php, la cual busca dentro de determinada tabla una palabra, el problema me resulta cuando deseo buscar mas de una palabra dentro de la tabla, me devuelve unicamente los valores de la tabla que contienen la frase exacta.

La consulta es esta:
-----------------------------------------------------------
mysql_query("SELECT id, $tabla->titulo, $tabla->texto FROM $tabla->tabla
WHERE $tabla->titulo LIKE '%$ver%' OR $tabla->texto LIKE '%$ver%'");
-----------------------------------------------------------
Me gustaria por ejemplo, si en la variable $ver tengo "una frase" me busque en la tabla los registros que tengan la palabra "una" o "frase", no se si me he explicado.

Gracias por sus respuestas.

Jorgito
27 de Febrero del 2006
Si querés buscar concordancias de cada palabra individual vas a tener que hacerlos utilizando mas OR, por ejemplo:
SELECT * FROM tabla WHERE (tabla.titulo LIKE '%una%') OR (tabla.titulo LIKE '%frase%') OR (tabla.texto LIKE '%una%') OR (tabla.texto LIKE '%frase%'). ¿Me explico?. Si querés podes utilizar este código que te genera la consulta:

$tabla = "tabla"; //Nombre de la tabla
$campos = array('campo1','campo2'); /*Campos sobre los que queres hacer la consulta. Pueden ser todos los que quieras*/

$frase = "una frase"; /*La frase que contiene las palabras que queres buscar. Tambien puede tener las palabras que quieras mientras esten separadas por espacios en blaco*/

$palabras = explode(" ", $frase);
$j = 0;
foreach ($campos as $c) {
$i = 0;
foreach ($palabras as $p) {
$where1[$i] = "(".$tabla.".".$c." LIKE '%".$p."%')";
$i++;
}
$where[$j] = implode(" OR ", $where1);
$j++;
}
$consulta = "SELECT tuscampos FROM $tabla WHERE ".implode(" OR ",$where);
mysql_query($consulta);

Espero que te sirva.