Примечание: неопределенная переменная: ссылка в функции - PullRequest
0 голосов
/ 25 марта 2020

Я пытаюсь отобразить количество строк в таблице SQL с условием.

Таблица viaturas содержит 4 записи. Я хочу посчитать, сколько строк в столбце estado соответствует "Не работает" , в данном случае 3 записи.


Я создал функцию ViaturasInop () в viaturas. php:

<?php
    function ViaturasInop()
    {   
        require_once "config.php";

        $query = "SELECT * FROM `viaturas` WHERE `estado` LIKE 'Inoperacional'";

        if ($result=mysqli_query($link,$query))
        $rowcount=mysqli_num_rows($result);

        return $rowcount;

        mysqli_close($link);
    }

    echo ViaturasInop();
?>

Если запустить viaturas. php правильно возвращает 3 .


На странице, которую я хочу, чтобы результат был показан index. php в теле HTML У меня есть следующее для вызова функции:

<div class="h5 mb-0 font-weight-bold text-gray-800"><?php echo ViaturasInop(); ?></div>

Однако в ответ я получаю следующие ошибки:

Примечание: неопределенная переменная: ссылка в C: [...] \ php \ viaturas. php в строке 8

Предупреждение: mysqli_query () ожидает, что параметр 1 будет mysqli, значение NULL указано в C: [...] \ php \ viaturas. php в строке 8

Примечание: неопределенная переменная: rowcount in C: [...] \ php \ viaturas. php on line 11


Я пробовал другие варианты, однако всегда получаю одну и ту же ошибку или.

1 Ответ

1 голос
/ 25 марта 2020

Вы должны никогда использовать require_once для получения подключения mysqli в функции.

Прежде всего, оно будет работать только один раз, как следует из названия.

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

Вместо этого вы должны вызвать require_once "config.php"; один раз вверху вашего скрипта, а затем использовать переменную $link, чтобы получить соединение mysqli. Чтобы получить соединение в функции, вы должны передать его как параметр функции:

<?php
function ViaturasInop($link)
{   
    $query = "SELECT count(*) FROM `viaturas` WHERE `estado` = 'Inoperacional'";
    $result=mysqli_query($link,$query);
    $row = mysqli_fetch_row($result);
    return $row[0];
}

сейчас, в вашем индексном файле, где-то вверху добавьте

require_once "config.php";

, а затем положить

echo ViaturasInop($link);

везде, где вам нужно число

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...