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

Notice: Undefined variable: link in a function

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

tableviaturas有4条记录。我想计算 estado 列中有多少行与 "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它正确returns 3 .


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

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

但是在 return 中我得到以下错误:

Notice: Undefined variable: link in C:[...]\php\viaturas.php on line 8

Warning: mysqli_query() expects parameter 1 to be mysqli, null given in C:[...]\php\viaturas.php on line 8

Notice: Undefined variable: rowcount in C:[...]\php\viaturas.php on line 11


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

您应该永远不要使用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);

任何你需要的号码