我有一个简单的user_count方法,我想简单地显示有多少用户注册并激活了他们的帐户。我知道我总共有5个用户,但是当我没有调试时它显示了这个我们当前有0个注册用户。,我没有任何php语法错误但是我收到错误,
ini_set('display_errors', 'On'); error_reporting(E_ALL);
function user_count($user_id)
{
$user_id = (int)$user_id;
$row_cnt = (int)$row_cnt;
$db = new mysqli('localhost','admin','','secured_login');
if($db->connect_errno){
$connect_error = 'Sorry, we are experiencing connection problems.';
die ($connect_error);
}
if($result = mysqli_query($db, "SELECT `user_id` FROM `users` WHERE `active` = 1")){
$row_cnt = mysqli_num_rows($result);
return $row_cnt;
}
}
这是我如何从不同的文件footer.php
调用方法或其结果<?php printf("We currenlty have %d registered users.", $row_cnt);?>
在我的浏览器上我看到以下错误消息
Notice: Undefined variable: row_cnt in /homepages/htdocs/includes/footer.php on line 31
We currenlty have 0 registered users.
我在方法的开头有变量$ row_cnt delared尽管PHP手册中的示例没有声明它http://us1.php.net/manual/en/mysqli-result.num-rows.php。收到错误消息后,我这样做了
有人请帮助我指出我做错了什么。谢谢!答案 0 :(得分:1)
您正在设置$row_cnt = (int)$row_cnt
,这意味着$row_cnt
已经存在,并且它不存在
答案 1 :(得分:1)
你将$ row_cnt设置为自己的类型,当时未定义。只需将其初始化为零。
答案 2 :(得分:1)
您需要在函数内声明变量,或者通过将其变为全局来从外部导入变量。
$row_cnt = (int)$row_cnt; // the right side is not defined
如果已在函数user_count()
之外声明它,则使用:
function user_count($user_id)
{
global $row_cnt; //Here you make it global
$user_id = (int)$user_id;
$row_cnt = (int)$row_cnt;
...
如果没有那么你就不能声明一个等于它自己的变量,因为它本身没有值。
试试这个:
function user_count($user_id)
{
$user_id = (int)$user_id;
$row_cnt = 0; //Initialize it to 0
$db = new mysqli('localhost','admin','','secured_login');
if($db->connect_errno){
$connect_error = 'Sorry, we are experiencing connection problems.';
die ($connect_error);
}
if($result = mysqli_query($db, "SELECT `user_id` FROM `users` WHERE `active` = 1")){
$row_cnt = mysqli_num_rows($result);
}
return $row_cnt; //Return 0 or another int.
}