注意:未定义的变量:num

时间:2016-12-03 13:50:46

标签: php mysqli

我在conn.php中有三个文件func.phpindex.phpconn.php我已连接到数据库,index.php我已将其包括在内在func.php中的连接文件我有一个计算列数的函数

func.php

<?php
function countusers($connection, $column, $table)
{
    $stmt = mysqli_prepare($connection, "
                                    SELECT
                                        COUNT($column)
                                    FROM
                                        $table");
    if($stmt)
    {
        mysqli_stmt_bind_result($stmt, $num);
        mysqli_execute($stmt);
        mysqli_stmt_fetch($stmt);
        mysqli_stmt_close($stmt);
    }
    return $num;
}

但它似乎不起作用我尝试在函数中添加连接文件并且它有效。

这是我的索引文件

的index.php

<?php
require_once "conn.php";
include "func.php";
echo countusers($conn, "id", "mods");

conn.php

<?php
$conn = mysqli_connect("localhost", "root", "", "test", 3306);
if(!$conn)
{
    echo "An Error Occurred";
}

2 个答案:

答案 0 :(得分:1)

在php.net中快速阅读说明bind_result必须在执行后发生...我没有运行它所以它只是一个建议。

所以你可以试试......

//... SNIP...
    if($stmt)
    {
        mysqli_stmt_execute($stmt); // Changed this to  mysqli_stmt_execute       
        mysqli_stmt_bind_result($stmt, $num);
        mysqli_stmt_fetch($stmt);
        mysqli_stmt_close($stmt);
    }
    else {
       $num = 0;
    }
    return $num;
// ... SNIP ...

在$ stmt为false的情况下,$ num的默认值是多少?你需要决定并设置它。

更新:在stmt因任何原因失败的情况下,已添加$ num的默认值。我已经运行了这段代码,但它确实有用。

代码段中建议的更改为$ num提供了值,而原始代码则没有。

关于所使用的实际方法/实施的有效性是另一回事,这个答案直接解决了手头的问题。

答案 1 :(得分:0)

试试这个

error_reporting(E_ALL);
require_once "conn.php";
require_once "func.php";

echo countusers($conn, "id", "mods");