@avtor18

Ошибка Fatal error: Uncaught Error: Call to a member function fetch_assoc() on boolean in W:\domains\localhost\page2.php:21 Stack trace: #0 W:\domain?

Здравствуйте, помогите пожалуйста, возникла ошибка в коде. Пишу строку для поиска данных и вывода из БД.
<?php 
    function search($words){
		$words = htmlspecialchars($words); //запрет на ввод различных символов
		if ($words === "") return false;    //пустой символ введен
		$query_search = ""; //пустая строка
		
		$arraywords = explode(" ", $words); //учитывая пробелы
		foreach($arraywords as $key => $value) { //перебираем слова 
		     if (isset($arraywords[$key - 1]))
				 $query_search .= ' OR';
			 $query_search .= '`nameavto` LIKE "%' .$value. '%" OR `texopic LIKE` "%'.$value.'%"';	
		}
		$query = "SELECT * FROM tb_avtom WHERE $query_search";
		$mysqli = new mysqli("localhost","root","","dt_avto");
		$result_set = $mysqli->query($query); //$result_set двумерный массив
		$mysqli->close();
		
		$i = 0;
		while ($row = $result_set->fetch_assoc()){
			$results[$i] = $row;
			$i++;
		}
		$result_set->close();
		return $results;
		
	}


   if (isset($_POST['bsearch'])){   //проверка была ли отправлена форма
	   $words = $_POST['words'];
	   $results = search ($words);
	   
   }
?>

Ошибка здесь
$i = 0;
		while ($row = $result_set->fetch_assoc()){
			$results[$i] = $row;
			$i++;

Как исправить? помогите пожалуйста,срочно нужно доделать за ночь
  • Вопрос задан
  • 4004 просмотра
Пригласить эксперта
Ответы на вопрос 1
glaphire
@glaphire Куратор тега PHP
PHP developer
Как минимум:
$result_set = $mysqli->query($query); //$result_set двумерный массив

вернуло false вместо объекта (документация),
поэтому валится ошибка
Fatal error: Uncaught Error: Call to a member function fetch_assoc() on boolean
на строчке while ($row = $result_set->fetch_assoc()){

UPD. Тут обратная кавычна съехала:
оригинал:
$query_search .= '`nameavto` LIKE "%' .$value. '%" OR `texopic LIKE` "%'.$value.'%"';

фикс:
$query_search .= '`nameavto` LIKE "%' .$value. '%" OR `texopic` LIKE "%'.$value.'%"';

Возможно поэтому запрос не выполнялся и выдавал false вместо результата. Если что - пошаговый дебаг в помощь, также есть mysqli last error для проверки, что не так с запросом.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы