Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 13.02.2018
Сообщений: 35

Fatal error: Call to a member function fetch_assoc() on a non-object in

22.11.2019, 00:40. Показов 1305. Ответов 19
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Делал сайт по уроку на ютубе https://www.youtube.com/watch?... R&index=16. Проверил 100 раз, но выходит одно и таже ошибка "Fatal error: Call to a member function fetch_assoc() on a non-object in Z:\home\news\www\functions\functions.php on line 24"
Помогите решить проблему

functions.php
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?php
    $mysqli = false;
    function connectDB() {
        global $mysqli;
        $mysqli = new mysqli("localhost", "root", "", "newsbase");
        $mysqli->query("SET NAMES 'utf-8'");
    }
 
    function closeDB() {
        global $mysqli;
        $mysqli->close ();
    }
 
     function getNews ($limit) {
        global $mysqli;
        connectDB();
        $result = $mysqli->query("SELECT * FROM 'news' ORDER BY 'id' DESC LIMIT $limit");
        closeDB();
        return resultToArray ($result);
     }
 
     function resultToArray ($result) {
        $array = array ();
        while (($row = $result->fetch_assoc()) != false) {
            $array[] = $row;
        }
        return $array;
     }
 
?>
кусочек из index.php
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<head>
    <?php
        $title = "Новости";
        require_once "/blocks/head.php";
        $news = getNews (3);
    ?>
</head>
<body>
    <?php require_once "/blocks/header.php" ?>
    <div id="wrapper">
        <div id="leftCol">
            <?php
                for ($i=0; $i < count($news); $i++) { 
                    if ($i==0)
                        echo "<div id=\"bigArticle\">";
                    else
                        echo "<div class=\"article\">";
                    echo '<img src="/images/article/'.$news[$i]["id"].'.jpg" alt="Статья '.$news[$i]["id"].'" title="Статья '.$news[$i]["id"].'">
                    <h2>Статья '.$news[$i]["title"].'</h2>
                    <p>'.$news[$i]["intro_text"].'</p>
                    <a href="/article.php">
                    <div class="more">Далее</div>
                    </a>
                    </div>';
                    if ($i == 0)
                        echo "<div class=\"clear\"><br></div>";
                }
            ?>
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.11.2019, 00:40
Ответы с готовыми решениями:

Fatal error: Call to a member function fetch_assoc() on a non-object
Искал, ничего не нашел, решил написать, есть код для поиска по базе, если вводить в поле 1 слово, без проблем ищет, если вводить 2 через...

Реализация поиска: Fatal error: Call to a member function fetch_assoc() on a non-object in
не работает реализация поиска выдает ошибку Fatal error: Call to a member function fetch_assoc() on a non-object in &lt;?php ...

Помошь в поимке ошибки Fatal error: Call to a member function fetch_assoc() on a non-object in
Не пойму где закралась ошибка, понятно что что-то не то с определением объекта, но вот глаз замылился и не могу найти где: function...

19
 Аватар для esculap_ra
462 / 265 / 55
Регистрация: 22.08.2010
Сообщений: 1,204
Записей в блоге: 4
22.11.2019, 01:06
PHP
1
mysqli_fetch_assoc ( $result )
Вот эта функция, а в $result не хранится объект БД. поэтому не разрывай соединение в функции
PHP
1
2
3
4
5
6
7
     function getNews ($limit) {
        global $mysqli;
        connectDB();
        $result = $mysqli->query("SELECT * FROM 'news' ORDER BY 'id' DESC LIMIT $limit");
      //  closeDB();
        return resultToArray ($result);
     }
а тут
PHP
1
2
3
4
5
6
7
8
9
     function resultToArray ($result) {
global $mysqli;
        $array = array ();
        while (($row = $mysqli->fetch_assoc($result))) != false) {
            $array[] = $row;
        }
closeDB();
        return $array;
     }
1
0 / 0 / 0
Регистрация: 13.02.2018
Сообщений: 35
22.11.2019, 06:45  [ТС]
Fatal error: Call to undefined method mysqli::fetch_assoc() in Z:\home\news\www\functions\functions.php on line 25

и я не понял куда правильнее вставить
PHP
1
mysqli_fetch_assoc ( $result )
Заранее спасибо))
0
 Аватар для esculap_ra
462 / 265 / 55
Регистрация: 22.08.2010
Сообщений: 1,204
Записей в блоге: 4
22.11.2019, 10:58
Цитата Сообщение от Асылхан97 Посмотреть сообщение
и я не понял куда правильнее вставить
PHPВыделить код
1
mysqli_fetch_assoc ( $result )
Это не нужно вставлять - я привел измененные коды функций.
1
0 / 0 / 0
Регистрация: 13.02.2018
Сообщений: 35
22.11.2019, 12:07  [ТС]
esculap_ra, А что делать с эти?
Fatal error: Call to undefined method mysqli::fetch_assoc() in Z:\home\news\www\functions\functions.php on line 25

Я всё поменял.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?php
    $mysqli = false;
    function connectDB() {
        global $mysqli;
        $mysqli = new mysqli("localhost", "root", "", "newsbase");
        $mysqli->query("SET NAMES 'utf-8'");
    }
 
    function closeDB() {
        global $mysqli;
        $mysqli->close ();
    }
 
     function getNews ($limit) {
        global $mysqli;
        connectDB();
        $result = $mysqli->query("SELECT * FROM 'news' ORDER BY 'id' DESC LIMIT $limit");
        //closeDB();
        return resultToArray ($result);
     }
 
     function resultToArray ($result) {
        global $mysqli;
        $array = array ();
        while (($row = $mysqli->fetch_assoc($result)) != false) {
            $array[] = $row;
        }
        closeDB();
        return $array;
 
     }
 
?>
0
 Аватар для esculap_ra
462 / 265 / 55
Регистрация: 22.08.2010
Сообщений: 1,204
Записей в блоге: 4
22.11.2019, 18:17
Цитата Сообщение от Асылхан97 Посмотреть сообщение
А что делать с эти?
Открой файл с классом mysqli и найди эту функцию fetch_assoc
если ее нет, тогда создай

PHP
1
2
3
4
5
6
7
function fetch_assoc($result){
        $array = array ();
        while (($row = mysqli_fetch_assoc($result)) != false) {
            $array[] = $row;
        }
        return $array;
}
А эту переделай

PHP
1
2
3
4
5
   function resultToArray ($result) {
        global $mysqli;
        return $mysqli->fetch_assoc($result);
 
     }
1
0 / 0 / 0
Регистрация: 13.02.2018
Сообщений: 35
22.11.2019, 18:25  [ТС]
esculap_ra, Сделал так
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<?php
    $mysqli = false;
    function connectDB() {
        global $mysqli;
        $mysqli = new mysqli("localhost", "root", "", "newsbase");
        $mysqli->query("SET NAMES 'utf-8'");
    }
 
    function closeDB() {
        global $mysqli;
        $mysqli->close ();
    }
 
     function fetch_assoc($result){
        $array = array ();
        while (($row = mysqli_fetch_assoc($result)) != false) {
            $array[] = $row;
        }
        return $array;
 
     function resultToArray ($result) {
        global $mysqli;
        return $mysqli->fetch_assoc($result);
 
     }
     
     function getNews ($limit) {
        global $mysqli;
        connectDB();
        $result = $mysqli->query("SELECT * FROM 'news' ORDER BY 'id' DESC LIMIT $limit");
        //closeDB();
        return resultToArray ($result);
     }
 
        closeDB();
        return $array;
 
     }
 
?>
Выдёйт Fatal error: Call to undefined function getNews() in Z:\home\news\www\index.php on line 7
при удалении тройки в $news = getNews (3), выдаёт Fatal error: Cannot use string offset as an array in Z:\home\news\www\index.php on line 21
0
68 / 60 / 10
Регистрация: 07.03.2019
Сообщений: 657
22.11.2019, 19:11
Цитата Сообщение от Асылхан97 Посмотреть сообщение
Call to undefined function
функция не вызывается , или вызывается до того как файл подключен
0
0 / 0 / 0
Регистрация: 13.02.2018
Сообщений: 35
22.11.2019, 19:39  [ТС]
server_net, и как это исправить?
0
 Аватар для esculap_ra
462 / 265 / 55
Регистрация: 22.08.2010
Сообщений: 1,204
Записей в блоге: 4
22.11.2019, 19:48
Цитата Сообщение от Асылхан97 Посмотреть сообщение
function fetch_assoc($result){ $array = array (); while (($row = mysqli_fetch_assoc($result)) != false) { $array[] = $row; } return $array;
Во-первых ты забыл закрывающую скобку
Во-вторых, я скачал посмотреть в файл (он может называться db.php, mysqli.php или др.), где инициируется класс mysqli а не ставить функцию в индексном файле.
0
0 / 0 / 0
Регистрация: 13.02.2018
Сообщений: 35
22.11.2019, 20:36  [ТС]
esculap_ra, https://dropmefiles.com/Rt7lm файлы

Добавлено через 1 минуту
esculap_ra, нету такого файла. бд подключается в function.
0
23.11.2019, 07:01

Не по теме:




Делал сайт по уроку на ютубе


Гошу на костер за такие уроки.

0
 Аватар для esculap_ra
462 / 265 / 55
Регистрация: 22.08.2010
Сообщений: 1,204
Записей в блоге: 4
23.11.2019, 11:34
Цитата Сообщение от Асылхан97 Посмотреть сообщение
нету такого файла. бд подключается в function.
Действительно нет в этой папке, но откуда берется глобальный объект global $mysqli?

Добавлено через 10 минут
Тогда попробуй вывести результат
PHP
1
2
$result = $mysqli->query("SELECT * FROM 'news' ORDER BY 'id' DESC LIMIT $limit");
print_r($result );
Посмотрим что отдает, а потом решим
0
0 / 0 / 0
Регистрация: 13.02.2018
Сообщений: 35
23.11.2019, 12:29  [ТС]
esculap_ra, безрезультатно.
0
10 / 7 / 2
Регистрация: 11.11.2019
Сообщений: 59
23.11.2019, 16:23
Возьмите вот такой вариант работы с базой, не мучайтесь:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?php
 
  function getConfig()
  {
    return [
      'host' => 'localhost',
      'dbname' => 'cuber_forum',
      'user' => 'root',
      'password' => ''
    ];
  }
 
  function dbConnect()
  {
    static $db = null;
      if ($db === null){
        $config = getConfig();
        $dsn ="mysql:host={$config['host']};dbname={$config['dbname']};";
        $db_object = new PDO($dsn,$config['user'],$config['password']);
      }
    return $db_object;
  }
 
  function getNews ($limit)
  {
 
    $result = dbConnect() -> prepare('SELECT * FROM `news` ORDER BY `id` DESC LIMIT ?');
    $result -> bindValue(1, $limit, PDO::PARAM_INT);
    $result -> execute();
    $result = $result ->fetchAll(PDO::FETCH_ASSOC);
 
    return $result;
  }
 
  $limit = 2;
 
  echo '<pre>';
  print_r(getNews ($limit));
Добавлено через 28 минут
Вывести данные из базы можно как нибудь так :

PHP
1
2
3
4
5
6
7
8
  <?php foreach (getNews ($limit) as $item): ?>
      <div class='article'>
        <img src="/images/article/<?= $item['image'] ?>">
        <h2><?= $item['title'] ?></h2>
        <p><?= $item['short_text'] ?></p>
        <a href="/<?= $item['news_link'] ?>"><div class="more">Далее</div></a>
      </div>
  <?php endforeach; ?>
0
 Аватар для esculap_ra
462 / 265 / 55
Регистрация: 22.08.2010
Сообщений: 1,204
Записей в блоге: 4
23.11.2019, 16:51
Цитата Сообщение от Асылхан97 Посмотреть сообщение
esculap_ra, безрезультатно.
Тогда выведи $mysqli
HTML5
1
2
global $mysqli;
print_r($mysqli );
Вполне вероятно что в глобальной нет объекта
0
0 / 0 / 0
Регистрация: 13.02.2018
Сообщений: 35
24.11.2019, 20:19  [ТС]
esculap_ra, ничего.
0
10 / 7 / 2
Регистрация: 11.11.2019
Сообщений: 59
25.11.2019, 00:19
Вы не пробиваемый идиот )

Добавлено через 1 минуту
Вам же ясно дали понять, что вы двигаетесь не тем путем. И вы упорно не хотите принять совет. Тогда гвоздитесь клеить обои )
0
 Аватар для esculap_ra
462 / 265 / 55
Регистрация: 22.08.2010
Сообщений: 1,204
Записей в блоге: 4
25.11.2019, 00:33
Цитата Сообщение от Асылхан97 Посмотреть сообщение
esculap_ra, ничего.
Что и требовалось доказать. Нет инициации БД, то есть отсутствует класс. Тут человек привел пример - используй его.
0
10 / 7 / 2
Регистрация: 11.11.2019
Сообщений: 59
25.11.2019, 05:03
Вместо Гоши посмотрите видео Victor Zinchenko, PHP Start | Теория и PHP Start | Практика. Мало, но довольно информативно для новичков.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.11.2019, 05:03
Помогаю со студенческими работами здесь

выводит ошибку Fatal error: Call to a member function fetch_assoc() on a non-object in Z:\home\veterinar.com\www\obzor.php on line 5
&lt;?php require_once('header.php'); function printResultSet($result_set) { echo &quot;Количество...

Fatal error: Call to a member function query() on a non-object in
страница выдает вот такую ошибку Fatal error: Call to a member function query() on a non-object in...

Fatal error: Call to a member function getField() on a non-object
пожалуйста помогите не знаю какая ошибка protected function getField($field_out, $field_in, $value_in) { return...

Fatal error: Call to a member function query() on a non-object
class users extends modules public function AddUser($login, $password, $ban) { return $this-&gt;mysqli-&gt;query(&quot;INSERT INTO...

Fatal error: Call to a member function connect() on a non-object in
Fatal error: Call to a member function connect() on a non-object in /home/users1/w/wye-solution/domains/kapitalwork.com/index.php on line...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru