Olá pessoal eu tenho um algorítimo em php que busca informações dentro da tabela, e para fazer isso ele usa “LIKE%palavradigitada%” para pesquisar palavras não exatas.
Quando o usuário pesquisa uma palavra ele busca numa boa, porém quando é digitado mais de uma palavra(por exemplo: uma frase ou palavra composta), ele não retorna nada.
segue o código abaixo (me desculpem se não estiver usando boas práticas, é que eu comecei a estudar PHP orientado a objetos essa semana):
**classe que define o objeto**
<?php
class Pesquisa{
public $autor;
public $titulo;
public $subtitulo;
public $foto;
//seter
function setPesquisa($autor,$titulo,$subtitulo,$foto){
$this->autor = $autor;
$this->titulo = $titulo;
$this->subtitulo = $subtitulo;
$this->foto = $foto;
}
//geters
function getAutor(){
return $this->autor;
}
function getTitulo(){
return $this->titulo;
}
function getSubtitulo(){
return $this->subtitulo;
}
function getFoto(){
return $this->foto;
}
}
?>
Classe que faz a conexão:
<?php
require_once '../model/Pesquisa.php';
class PesquisaDAO extends Pesquisa{
function buscaPesquisa($pesquisa){
$cont;
$vetor= array();
// Conecta ao banco de dados
$mysqli = new mysqli( "****", "*****", "***", "****");
// Verifica se ocorreu algum erro
if (mysqli_connect_errno()) {
die('Não foi possível conectar-se ao banco de dados: ' . mysqli_connect_error());
exit();
}
//sql select * from sua_tabela where lower(campo) like '%anatomia%codigo%'
if($sql = $mysqli->prepare("SELECT autor,titulo,subtitulo,foto FROM blog WHERE lower(texto) LIKE '%".$pesquisa."%' LIMIT 6")){
$sql->execute();
$sql->store_result();
if($sql->bind_result($autor, $titulo, $subtitulo, $foto)){
while ($sql->fetch()) {
$vetor[$cont] = array($autor, $titulo, $subtitulo, $foto);
$cont++;
}
$sql->close();
}
}
$mysqli->close();
return $vetor;
}
}