Как я могу сделать SELECT с помощью LIKE эффективным?

0

Я пытаюсь выполнить запрос, используя LIKE. Я использую LIKE or LIKE, потому что мне нужно, чтобы SELECT возвращал значение или другое, он работает. Проблема в том, что мне нужно это возвращение cidade, cidade - таблица в моей базе данных.

Я пытаюсь это сделать.

public function getLocalByNomeOrTipo($value, $idCidade){
        $find = "%".$value."%";
        $stm = $this->conexao->prepare("SELECT * FROM locais t1
                                        INNER JOIN cidade t2 ON (t1.cidade_id = t2.id)
                                        INNER JOIN tipo_local t3 ON (t1.tipo_local_id = t3.id)
                                        WHERE (t1.cidade_id = ?) AND (status = 1) AND (t1.nome LIKE ? OR t3.tipo LIKE ?)
                                        ORDER BY t1.nome");
        $stm->bindParam(1, $idCidade);
        $stm->bindParam(2, $find);
        $stm->bindParam(3, $find);
        $stm->execute();
        $lista = $stm->fetchAll();

        return $lista;
    }
  • 0
    А в чем проблема с вашим запросом? Возможно, вам следует отредактировать свой вопрос и предоставить образцы данных и желаемых результатов.
  • 0
    @GordonLinoff Мне нужно, чтобы эта проблема возвращала только значения t1.cidade_id = 1 например, но не работает и всегда возвращает все значения.
Теги:

1 ответ

0
Лучший ответ

Решила проблему.

public function getLocalByNomeOrTipo($value, $idCidade){
        $find = "%".$value."%";
        $stm = $this->conexao->prepare("SELECT * FROM locais t1
                                        INNER JOIN cidade t2 ON (t1.cidade_id = t2.id)
                                        INNER JOIN tipo_local t3 ON (t1.tipo_local_id = t3.id)
                                        WHERE (t1.cidade_id = ?) AND (status = 1) AND (t1.nome LIKE ? OR t3.tipo LIKE ?)
                                        ORDER BY t1.nome");
        $stm->bindParam(1, $idCidade);
        $stm->bindParam(2, $find);
        $stm->bindParam(3, $find);
        $stm->execute();
        $lista = $stm->fetchAll();

        return $lista;
    }

Ещё вопросы

Сообщество Overcoder
Наверх
Меню