Почему возвращается только первое совпадение при использование оператора LIKE в mysql? Собственно, суть вот в чем: есть sql запрос, есть база данных. Сам запрос выглядит следующим образом:SELECT `service` FROM `service_synonyms` WHERE `synonym` LIKE '%$query%' Выборка данных происходит так (используется mysqli):$sql = "SELECT `service` FROM `service_synonyms` WHERE `synonym` LIKE '%$query%' "; $result = $this->_dbconn->query($sql)->fetch_array(MYSQLI_ASSOC); При использовании объектно-ориентированной модели PHP, возвращается первое совпадение и всё. Но, если делать процедурно, то возвращает все совпадения. Как быть и что я делаю не так?
Проблема здесь заключается в том, что вы используете метод fetch_array() с параметром MYSQLI_ASSOC. Этот метод возвращает только первую строку результата запроса. Чтобы получить все строки результата запроса, вам следует использовать метод fetch_all():
$sql = "SELECT `service` FROM `service_synonyms` WHERE `synonym` LIKE '%$query%' "; $result = $this->_dbconn->query($sql)->fetch_all(MYSQLI_ASSOC);
Таким образом, вы получите все строки результата запроса, а не только первую.
Проблема здесь заключается в том, что вы используете метод fetch_array() с параметром MYSQLI_ASSOC. Этот метод возвращает только первую строку результата запроса. Чтобы получить все строки результата запроса, вам следует использовать метод fetch_all():
$sql = "SELECT `service` FROM `service_synonyms` WHERE `synonym` LIKE '%$query%' ";$result = $this->_dbconn->query($sql)->fetch_all(MYSQLI_ASSOC);
Таким образом, вы получите все строки результата запроса, а не только первую.