未定义的变量:$ row_cnt - php

时间:2014-02-04 00:51:06

标签: php mysqli

我有一个简单的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。收到错误消息后,我这样做了

有人请帮助我指出我做错了什么。谢谢!

3 个答案:

答案 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.

}