提问人:Willian Oliveira 提问时间:3/25/2020 最后编辑:Your Common SenseWillian Oliveira 更新时间:3/25/2020 访问量:1755
注意:未定义的变量:函数中的链接
Notice: Undefined variable: link in a function
问:
我正在尝试显示带有条件的 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 行
我尝试了其他替代方案,但是,我总是遇到同样的错误。
答:
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(*) 查询必须用于此目的
评论
LIKE
... LIKE '%Inoperacional%'
where estado='Inoperacional';
config.php