Перейти к содержимому



Нужна ваша помочь - ошибка в параметре

#1 Sergey1977177

Sergey1977177
  • Пользователь
  • 18 сообщений
  • Репутация: 0
0

Отправлено 11 Январь 2018 - 21:57

Добрый вечер, уважаемые специалисты!

Нужна ваша помощь!!!!

Учусь писать сайт на PHP, посмотрел на ютубе курсы, все вроде бы понятно, теперь вот решил попробовать. Прописал код подключения к БД, все работает. Потом прописываю этот код;

$result_set = $mysqli->query("SELECT title, meta_d, meta_k, text FROM `steklo` WHERE page='index'");$row = mysqli_fetch_array($result_set);
мне выводит ошибку 
Warning: mysqli_fetch_row() expects parameter 1 to be mysqli_result, boolean given in C:\SERVER\OpenServer\domains\steklotonir.local\www\index.php on line 5"
И не пойму в чем ошибка, пишет, что ожидает какой то параметр 1... ПОМОГИТЕ, в чем проблема?  когда смотрел курс и пробовал, все работало

 

 

  • 0

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85
Советую обратить внимание на следующее:
  1. Кто может продвинуть сайт?
  2. Нужна ваша оценка моему сайту
  3. Помогите, нужно вывести в топ запрос!
  4. Кто пользовался темой The7?
  5. Индексация сайта в Яндексе на Wordpress

#2 fedornabilkin

fedornabilkin
  • Пользователь
  • 844 сообщений
  • Репутация: 126

Отправлено 11 Январь 2018 - 22:20

В $result_set булево значение, а должен быть результат выборки из БД.

Плохой подход к написанию кода, дебажить сложно будет.


  • 0


#3 Sergey1977177

Sergey1977177
    Topic Starter
  • Пользователь
  • 18 сообщений
  • Репутация: 0

Отправлено 11 Январь 2018 - 22:21

Я только учусь(( А как правильно написать?


  • 0

#4 fedornabilkin

fedornabilkin
  • Пользователь
  • 844 сообщений
  • Репутация: 126

Отправлено 11 Январь 2018 - 22:32

По крайней мере не в одну строку и с использованием переменных. В переменных мощь.


        $sql = "SELECT title, meta_d, meta_k, text "
            ."FROM `steklo` "
            ."WHERE page = 'index' "
            .";";
        
        $result_set = $mysqli->query($sql);
        $row = mysqli_fetch_array($result_set);

Как дорастешь до больших запросов со сложными условиями и подзапросами, вспомнишь этот код и скажешь спасибо, когда будешь дебажить.


  • 0


#5 Sergey1977177

Sergey1977177
    Topic Starter
  • Пользователь
  • 18 сообщений
  • Репутация: 0

Отправлено 11 Январь 2018 - 22:35

у меня все время в этой строке показывает ошибку    $row = mysqli_fetch_array($result_set);     Но, здесь все вроде правильно


  • 0

#6 fedornabilkin

fedornabilkin
  • Пользователь
  • 844 сообщений
  • Репутация: 126

Отправлено 12 Январь 2018 - 09:21

А ты посмотри, что у тебя находится в $result_set. Там по идее должен быть указатель на результат выборки, а по факту true/false, если учитывать ошибку из ТС.

Глянул первый попавшийся пример, он малость отличается от твоего:

//создаем и выполняем запрос к таблице пользователей
$query = "SELECT id, name FROM users ORDER BY id LIMIT 10";
$result = $mysqli->query($query);
//выводим данные
while($row = $result->fetch_array()) {
    echo $row['id']." ".$row['name']."<br>";
}

  • 0


#7 Sergey1977177

Sergey1977177
    Topic Starter
  • Пользователь
  • 18 сообщений
  • Репутация: 0

Отправлено 14 Январь 2018 - 17:18

Спасибо всем за помощь! все оказалось до банальности просто!!!

@fedornabilkin,

Что значит дебажить? 


  • 0

#8 miketomlin

miketomlin
  • Пользователь
  • 380 сообщений
  • Репутация: 70

Отправлено 15 Январь 2018 - 00:34

Означает отлаживать. $result нужно проверять, прежде чем с ним работать. Или на худой конец добавьте or die() – это отладка для начинающих :)


P.S. Такая ошибка можно возникать во время выполнения не сейчас, а в будущем, поэтому упомянутую проверку нужно делать обязательно. Другое дело, что некоторые используют or die() в том числе и на продакшене :( Остается надеяться, что они хоть вешают терминальный обработчик перед этим.


  • 0

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85


Оформление форума – IPBSkins.ru