注意:未定义的变量:函数中的链接

Notice: Undefined variable: link in a function

提问人:Willian Oliveira 提问时间:3/25/2020 最后编辑:Your Common SenseWillian Oliveira 更新时间:3/25/2020 访问量:1755

问:

我正在尝试显示带有条件的 SQL 表中的行数。

该表 viaturas 有 4 条记录。我想计算列中有多少行与“Inoperacional”匹配,在本例为 3 条记录。


我在 viaturas.php 中创建了一个函数 ViaturasInop():

<?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


在页面中,我希望结果显示在 HTML 正文index.php,我有以下内容来调用该函数:

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

但是,作为回报,我收到以下错误:

注意:未定义的变量:C中的链接:[...]\php\viaturas.php 在第 8 行

警告:mysqli_query() 期望参数 1 为 mysqli,在 C:[...] 中给出 null\php\viaturas.php 在第 8 行

注意:未定义的变量:C:[...]\php\viaturas.php 在第 11 行


我尝试了其他替代方案,但是,我总是遇到同样的错误。

php 函数 mysqli

评论

1赞 Professor Abronsius 3/25/2020
使用运算符时,您通常会这样做,否则它与LIKE... LIKE '%Inoperacional%'where estado='Inoperacional';
2赞 Nick 3/25/2020
里面有什么?config.php

答:

1赞 Your Common Sense 3/25/2020 #1

切勿使用 require_once 在函数中获取 mysqli 连接。

首先,顾名思义,它只会工作一次。

此外,即使您克服了此限制,在每次函数调用中创建新连接也会破坏您的数据库服务器

相反,您必须在脚本顶部调用一次,然后使用该变量获取 mysqli 连接。为了在函数中建立连接,您必须将其作为函数参数传递:require_once "config.php";$link

<?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);

无论您在哪里需要号码

评论

1赞 Your Common Sense 3/25/2020
顺便说一句,您永远不应该使用 mysqli_num_rows 来计算表中的行。只有 SELECT count(*) 查询必须用于此目的