mysqli oop return null



有人能告诉我我的代码出了什么问题吗:

class sub_category
{
    private $con;
    function __construct()
    {
        $this->con = new mysqli("localhost", "root", "", "whatever");
    }
    function show_all()
    {
        $per_page=5;
        if(isset($_GET['page']))
        {
            $page = $_GET['page'];
        }
        else
        {
            $page = 1;
        }
        $start_from = ($page-1)*$per_page;
        $sql = "SELECT sub_kategori.id_sub_kategori, kategori.nama_kategori, sub_kategori.nama_sub_kategori FROM sub_kategori INNER JOIN kategori ON kategori.id_kategori = sub_kategori.id_kategori ORDER BY sub_kategori.id_sub_kategori LIMIT ?, ?";
        $stmt = $this->con->prepare($sql);
        $stmt->bind_param('ii', $start_from, $per_page);
        $stmt->execute();
        $stmt->bind_result($id, $namecat, $cat);
        while($stmt->fetch())
        {
            echo "<tr>";
            echo "<td>$id</td>";
            echo "<td>$namecat</td>";
            echo "<td>$cat</td>";
            echo "<td><a href='javascript:'>Update</a></td>";
            echo "<td><a href='sub_category.php?ghgfh=$id'>Delete</a></td>";
            echo "<td><a href=''>Report</a></td>";
            echo "</tr>";
        };
        $stmt->close();
        $page_sql = "SELECT sub_kategori.id_sub_kategori, kategori.nama_kategori, sub_kategori.nama_sub_kategori FROM sub_kategori INNER JOIN kategori ON kategori.id_kategori = sub_kategori.id_kategori ORDER BY sub_kategori.id_sub_kategori";
        $stmt_page = $this->con->query($page_sql);
        $total_record = $stmt_page->num_rows;
        $total_page = ceil($total_record/$per_page);
        echo "</tbody>";
        echo "</table>";
        echo "<center>";
        echo "<ul class='pagination'>";
        echo "<li><a href=sub_category.php?page=1>First Page</a></li>";
        for($i=1;$i<=$total_page;$i++)
        {
            if(isset($_GET['page']))
            {
                if($i==$_GET['page'])
                {   
                    echo "<li class='active'><a href=sub_category.php?page=$i>$i</a></li>";
                }
                else
                {
                    echo "<li><a href=sub_category.php?page=$i>$i</a></li>";
                }
            }
            else
            {
                echo "<li><a href=sub_category.php?page=$i>$i</a></li>";
            }
        }
        echo "<li><a href=sub_category.php?page=$total_page>Last Page</a></li>";
        echo "</ul>";
        echo "</center>";
        $stmt_page->close();
    }
    function show($nama_sub_kategori)
    {
        $per_page=5;
        if(isset($_GET['page']))
        {
            $page = $_GET['page'];
        }
        else
        {
            $page = 1;
        }
        $start_from = ($page-1)*$per_page;
        $nama_sub_kategori = "%$nama_sub_kategori%";
        $sql = "SELECT sub_kategori.id_sub_kategori, kategori.nama_kategori, sub_kategori.nama_sub_kategori FROM sub_kategori INNER JOIN kategori ON kategori.id_kategori = sub_kategori.id_kategori WHERE sub_kategori.id_sub_kategori LIKE ? OR sub_kategori.nama_sub_kategori LIKE ? OR kategori.nama_kategori LIKE ? ORDER BY sub_kategori.id_sub_kategori LIMIT ?, ?";
        $stmt = $this->con->prepare($sql);
        $stmt->bind_param('sssii', $nama_sub_kategori, $nama_sub_kategori, $nama_sub_kategori, $start_from, $per_page);
        $stmt->execute();
        $stmt->bind_result($id, $namecat, $cat);
        while($stmt->fetch())
        {
            echo "<tr>";
            echo "<td>$id</td>";
            echo "<td>$namecat</td>";
            echo "<td>$cat</td>";
            echo "<td><a href=''>Update</a></td>";
            echo "<td><a href='sub_category.php?ghgfh=$id'>Delete</a></td>";
            echo "<td><a href=''>Report</a></td>";
            echo "</tr>";
        };
        $stmt->close();
        $page_sql = "SELECT count(*) as total FROM sub_kategori INNER JOIN kategori ON kategori.id_kategori = sub_kategori.id_kategori WHERE sub_kategori.id_sub_kategori LIKE ? OR sub_kategori.nama_sub_kategori LIKE ? OR kategori.nama_kategori LIKE ? ORDER BY sub_kategori.id_sub_kategori";
        $stmt_page = $this->con->prepare($page_sql);
        $stmt_page->bind_param('sss', $nama_sub_kategori, $nama_sub_kategori, $nama_sub_kategori);
        $stmt_page->execute();
        $stmt_page->bind_result($row);
        $total_record = $row;
        echo $total_record;
        $total_page = ceil($total_record/$per_page);
        echo "</tbody>";
        echo "</table>";
        echo "<center>";
        echo "<ul class='pagination'>";
        echo "<li><a href=sub_category.php?page=1>First Page</a></li>";
        for($i=1;$i<=$total_page;$i++)
        {
            if(isset($_GET['page']))
            {
                if($i==$_GET['page'])
                {   
                    echo "<li class='active'><a href=sub_category.php?page=$i>$i</a></li>";
                }
                else
                {
                    echo "<li><a href=sub_category.php?page=$i>$i</a></li>";
                }
            }
            else
            {
                echo "<li><a href=sub_category.php?page=$i>$i</a></li>";
            }
        }
        echo "<li><a href=sub_category.php?page=$total_page>Last Page</a></li>";
        echo "</ul>";
        echo "</center>";
        $stmt_page->close();
    }
 }

show_all()函数运行得非常好!它显示数据和分页没有问题!

show()函数向我显示数据,它也在工作!但是分页结果为NULL!

我指的是

echo$total记录;

它给了我空分页!我的代码有问题吗?

将名称(例如total)添加到列中:

 SELECT count(*) as total FROM sub_kategori ....

然后只回显值:

echo $row->total

也许我缺少了一些明显的东西,因为我没有在php中以这种方式使用$this;也就是说,指定对特定类之外的全局变量的访问权限。在函数之间共享变量时,$global用于指定共享变量(在本例中为con)。
在showAll函数中,您可以设置$total_record=$stmt_page->num_rows;在第二个(show)函数中,您设置$total_record=$row;其中$row似乎尚未初始化。。。因此NULL是正确的。

最新更新