Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
4 / 4 / 3
Регистрация: 14.10.2014
Сообщений: 323

Fatal error: Uncaught Error: Call to undefined function countPeople()

02.09.2022, 08:39. Показов 1217. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вот такая ошибка выходит при запуске скрипта:
Fatal error: Uncaught Error: Call to undefined function countPeople() in C:\OpenServer\domains\vpohodenot\feedbac k.php:254 Stack trace: #0 {main} thrown in C:\OpenServer\domains\vpohodenot\feedbac k.php on line 254
Функция конечно же существует, в чем проблема?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.09.2022, 08:39
Ответы с готовыми решениями:

Ошибка: Fatal error: Uncaught Error: Call to undefined function mysql_num_rows() in
Пытаюсь вывести картинку из базы данных. Код PHP: <?php $host =...

Ошибка - Fatal error: Uncaught Error: Call to undefined function mysql_connect()
В чем проблема? Fatal error: Uncaught Error: Call to undefined function mysql_connect() in...

Ошибка Fatal error: Uncaught Error: Call to undefined function mysql_query()
добрый день у меня не работает mysl_query, вот код который хочет взять из базы данных. abstract class ACore{ protected $db; ...

9
Супер-модератор
Эксперт JSЭксперт HTML/CSSЭксперт PHP
 Аватар для gogolik
3970 / 2092 / 832
Регистрация: 13.03.2010
Сообщений: 6,900
02.09.2022, 08:58
Цитата Сообщение от maks_7 Посмотреть сообщение
Функция конечно же существует
Видимо, в параллельной вселенной, раз есть ошибка. Функция в этом же файле? Приведите код.
0
4 / 4 / 3
Регистрация: 14.10.2014
Сообщений: 323
02.09.2022, 09:05  [ТС]
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
41
42
43
44
45
46
47
48
49
50
51
52
if (!empty($_POST["name"]) && !empty($_POST["surname"])) {   
            countPeople($result);
         
            $servername = "127.0.0.1"; // Адрес сервера
            $username = "root"; // Имя пользователя
            $password = "root"; // Пароль
            $BDname = "enot"; // Название БД
         
            // Подключение к БД
            $mysqli = new mysqli($servername, $username, $password, $BDname); 
            
            // Проверка на ошибку
            if ($mysqli->connect_error) {
               printf("Соединение не удалось: %s\n", $mysqli->connect_error);
               exit();
            }
            // Получаем запрос
            $inputSearch1 = $_REQUEST['name']; 
            $inputSearch2 = $_REQUEST['surname']; 
   
            // Создаём SQL запрос
            $sql = "SELECT * FROM `enot_1` WHERE `name` = '$inputSearch1' || `surname` = '$inputSearch2'";
   
            // Отправляем SQL запрос
            $result = $mysqli -> query($sql);
 
            function doesItExist(array $arr) {
               // Создаём новый массив
               $data = array(
                  'name' => $arr['name'] != false ? $arr['name'] : 'Нет данных',
                  'surname' => $arr['surname'] != false ? $arr['surname'] : 'Нет данных'
                  
               );
               return $data; // Возвращаем этот массив
             }
 
            function countPeople($result) {         
               // Проверка на то, что строк больше нуля
               if ($result -> num_rows > 0) {
                  // Цикл для вывода данных
                  while ($row = $result -> fetch_assoc()) {
                     // Получаем массив со строками которые нужно выводить
                     $arr = doesItExist($row);
                     // Вывод данных
                     echo '<p>имя: '.$row['name'].'. фамилия: '.$row['surname'].'</p>';// выводим данные                          
                  }
               // Если данных нет
               } else {
                  echo "Никто не найден";
               }
            }
         }
скрипт поиска по mySQL и вывода найденного
0
 Аватар для sad67man
2604 / 1508 / 689
Регистрация: 23.08.2015
Сообщений: 3,839
02.09.2022, 12:48
maks_7, https://www.php.net/manual/ru/... efined.php

Функции не обязаны быть определены до их использования, исключая тот случай, когда функции определяются условно, как это показано в двух последующих примерах.

В случае, когда функция определяется в зависимости от какого-либо условия, например, как это показано в двух приведённых ниже примерах, обработка описания функции должна предшествовать её вызову.
1
4 / 4 / 3
Регистрация: 14.10.2014
Сообщений: 323
02.09.2022, 12:55  [ТС]
Спасибо, Вы не могли бы подсказать мне рабочий вариант, пожалуйста.
0
 Аватар для sad67man
2604 / 1508 / 689
Регистрация: 23.08.2015
Сообщений: 3,839
02.09.2022, 13:32
maks_7, Либо вынести объявление функции из блока if () { ... }, либо объявлять до вызова.

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
41
42
43
44
45
46
47
48
49
50
51
52
function countPeople($result) {
    // Проверка на то, что строк больше нуля
    if ($result -> num_rows > 0) {
        // Цикл для вывода данных
        while ($row = $result -> fetch_assoc()) {
            // Получаем массив со строками которые нужно выводить
            $arr = doesItExist($row);
            // Вывод данных
            echo '<p>имя: '.$row['name'].'. фамилия: '.$row['surname'].'</p>';// выводим данные                          
        }
        // Если данных нет
    } else {
        echo "Никто не найден";
    }
}
 
if (!empty($_POST["name"]) && !empty($_POST["surname"])) {
    countPeople($result);
 
    $servername = "127.0.0.1"; // Адрес сервера
    $username = "root"; // Имя пользователя
    $password = "root"; // Пароль
    $BDname = "enot"; // Название БД
 
    // Подключение к БД
    $mysqli = new mysqli($servername, $username, $password, $BDname);
 
    // Проверка на ошибку
    if ($mysqli->connect_error) {
        printf("Соединение не удалось: %s\n", $mysqli->connect_error);
        exit();
    }
    // Получаем запрос
    $inputSearch1 = $_REQUEST['name'];
    $inputSearch2 = $_REQUEST['surname'];
 
    // Создаём SQL запрос
    $sql = "SELECT * FROM `enot_1` WHERE `name` = '$inputSearch1' || `surname` = '$inputSearch2'";
 
    // Отправляем SQL запрос
    $result = $mysqli -> query($sql);
 
    function doesItExist(array $arr) {
        // Создаём новый массив
        $data = array(
            'name' => $arr['name'] != false ? $arr['name'] : 'Нет данных',
            'surname' => $arr['surname'] != false ? $arr['surname'] : 'Нет данных'
 
        );
        return $data; // Возвращаем этот массив
    }
}
1
4 / 4 / 3
Регистрация: 14.10.2014
Сообщений: 323
02.09.2022, 14:26  [ТС]
функцию
PHP
1
2
3
4
5
6
7
8
9
function doesItExist(array $arr) {
        // Создаём новый массив
        $data = array(
            'name' => $arr['name'] != false ? $arr['name'] : 'Нет данных',
            'surname' => $arr['surname'] != false ? $arr['surname'] : 'Нет данных'
 
        );
        return $data; // Возвращаем этот массив
    }
наверно тоже вынести надо...В общем и целом программа не работает. Сразу выводит, что "никто не найден"

Добавлено через 30 минут
https://prognote.ru/web-dev/ba... i658904138 - вот сдесь я взял этот код, может что-то неправильно перенес?
0
 Аватар для sad67man
2604 / 1508 / 689
Регистрация: 23.08.2015
Сообщений: 3,839
02.09.2022, 14:49
Лучший ответ Сообщение было отмечено maks_7 как решение

Решение

maks_7, У вас походу выключены ошибки уровня Notice, что плохо. Выводит что ничего не найдено, потому что вы вызываете функцию countPeople($result) еще до запроса к базе данных. Еще переменная $result даже не определена.

Да и функции у вас странные, плохо внутри функции делать какой-либо вывод html - а что если верстка будет усложняться? Лучше сформируйте массив данных, потом их подставляйте в шаблон.

Функции можно вынести в отдельный файл и его подключать

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
// functions.php
 
function getDb(): mysqli
{
    static $mysqli;
 
    if ($mysqli) {
        return $mysqli;
    }
 
    $servername = "127.0.0.1"; // Адрес сервера
    $username = "root"; // Имя пользователя
    $password = "root"; // Пароль
    $BDname = "enot"; // Название БД
 
    // Подключение к БД
    return $mysqli = new mysqli($servername, $username, $password, $BDname);
}
 
function searchItems($name, $surname) {
    $mysqli = getDb();
 
    $stmt = $mysqli->prepare("SELECT * FROM `enot_1` WHERE `name` = ? OR `surname` = ?");
    $stmt->bind_param('ss', $name, $surname);
    $stmt->execute();
    $result = $stmt->get_result();
 
    return $result->fetch_all(MYSQLI_ASSOC);
}
 
function encode($var) {
    return htmlspecialchars($var, ENT_QUOTES | ENT_SUBSTITUTE);
}
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
 
require_once __DIR__ . '/functions.php';
 
$items = [];
 
if (!empty($_POST["name"]) && !empty($_POST["surname"])) {
    $items = searchItems($_POST['name'], $_POST['surname']);
}
 
?>
 
<?php if (empty($items)): ?>
    <p>Ничего не найдено</p>
<?php else: ?>
    <?php foreach ($items as $item): ?>
        <p>имя: <?= encode($item['name']) ?> фамилия: <?= encode($item['surname']) ?> </p>
    <?php endforeach; ?>
<?php endif; ?>
Добавлено через 15 минут
maks_7, Метод POST используется, когда вы отправляете файл или делаете какую-либо операцию, изменяющую состояние вашей системы.

Для простого поиска и получения данных из БД отправляйте форму методом GET
1
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
02.09.2022, 17:27
Цитата Сообщение от maks_7 Посмотреть сообщение
https://prognote.ru/web-dev/ba... i658904138 - вот сдесь я взял этот код, может что-то неправильно перенес?
В принципе не правильно код со всяких помоек тащить.
0
4 / 4 / 3
Регистрация: 14.10.2014
Сообщений: 323
06.09.2022, 10:39  [ТС]
sad67man, спасибо, смысл работает, но есть небольшиие нюансы.
1. выдает ошибку:
Fatal error: require_once(): Failed opening required 'functions.php' (include_path='.') in C:\OpenServer\domains\vpohodenot\feedbac k2.php on line 17
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.09.2022, 10:39
Помогаю со студенческими работами здесь

Fatal error: Uncaught Error: Call to undefined function ereg_replace()
Fatal error: Uncaught Error: Call to undefined function ereg_replace() in C:\xampp\htdocs\TABIAT\gap\Add.php:7 Stack trace: #0 {main}...

Fatal error: Uncaught Error: Call to undefined function
Делаю по примеру, код идетничен, у автора все работает - у меня выдает ошибку Сама ошибка в браузере: Fatal error: Uncaught Error:...

Ошибка Fatal error: Uncaught Error: Call to undefined method mysqli_stmt::rowCount()
Мне нужно вернуть количество строк, которые были затронуты в запросе UPDATE. Вылетает ошибка Fatal error: Uncaught Error: Call to...

Fatal error: Uncaught Error: Call to a member function fetch_assoc() on bool in
Добрый день, помогите пожалуйста, в каком направлении двигаться? Fatal error: Uncaught Error: Call to a member function fetch_assoc() on...

Fatal error: Uncaught Error: Call to a member function execute() on boolean (Проблемы с БД)
Добрый день. Есть такой код: public function adbase($data) { $stmt = $this-&gt;datab-&gt;prepare(&quot;INSERT INTO goods (films,...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Видеокарта простаивает ночами? Вот 4 проекта, которые загрузят её наукой
Programma_Boinc 10.04.2026
Видеокарта простаивает ночами? Вот 4 проекта, которые загрузят её наукой Если на Windows стоит дискретная NVIDIA или AMD — можно отдать её вычислительную мощность реальным исследованиям. . . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru