Php mysqlioop返回null
谁能告诉我我的代码出了什么问题:Php mysqlioop返回null,php,oop,mysqli,Php,Oop,Mysqli,谁能告诉我我的代码出了什么问题: class sub_category { private $con; function __construct() { $this->con = new mysqli("localhost", "root", "", "whatever"); } function show_all() { $per_page=5; if(isset($_GET['page']
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();
}
}
类子类
{
私人$con;
函数_u构造()
{
$this->con=newmysqli(“localhost”、“root”、“无论什么”);
}
函数show_all()
{
每页$5;
如果(isset($_GET['page']))
{
$page=$_GET['page'];
}
其他的
{
$page=1;
}
$start_from=($page-1)*$每页;
$sql=“选择sub_kategori.id_sub_kategori,kategori.nama_kategori,sub_kategori.nama_sub_kategori,从sub_kategori内部连接kategori上的kategori.id_kategori=sub_kategori.id_kategori按sub_kategori.id_kategori限制的kategori顺序,”;
$stmt=$this->con->prepare($sql);
$stmt->bind_param('ii',$start_from,$per_page);
$stmt->execute();
$stmt->bind_result($id、$namecat、$cat);
而($stmt->fetch())
{
回声“;
回显“$id”;
回显“$namecat”;
回声“$cat”;
回声“;
回声“;
回声“;
回声“;
};
$stmt->close();
$page_sql=“选择sub_kategori.id_sub_kategori,kategori.nama_kategori,sub_kategori.nama_sub_kategori,从sub_kategori.id_kategori上的内部连接kategori=sub_kategori.id_kategori按sub_kategori.id_sub_kategori排序”;
$stmt\u page=$this->con->query($page\u sql);
$total\u record=$stmt\u page->num\u行;
$total_page=ceil($total_record/$per_page);
回声“;
回声“;
回声“;
回声“”;
回声“”;
对于($i=1;$iclose();
}
功能展示($nama_sub_kategori)
{
每页$5;
如果(isset($_GET['page']))
{
$page=$_GET['page'];
}
其他的
{
$page=1;
}
$start_from=($page-1)*$每页;
$nama_sub_kategori=“%$nama_sub_kategori%”;
$sql=“选择sub_kategori.id_sub_kategori,kategori.nama_kategori,sub_kategori.nama_sub_kategori从sub_kategori内部加入kategori.id_kategori=sub_kategori.id_kategori,其中sub_kategori.id_sub_kategori LIKE?或sub_kategori kategori.nama_sub_kategori_kategori LIKE?”或kategori.nama_kategori;
$stmt=$this->con->prepare($sql);
$stmt->bind_param('sssii',$nama_sub_kategori,$nama_sub_kategori,$nama_sub_kategori,$nama_sub_kategori,$start_from,$per_page);
$stmt->execute();
$stmt->bind_result($id、$namecat、$cat);
而($stmt->fetch())
{
回声“;
回显“$id”;
回显“$namecat”;
回声“$cat”;
回声“;
回声“;
回声“;
回声“;
};
$stmt->close();
$page_sql=“选择count(*)作为总计,从kategori.id_kategori=sub_kategori.id_kategori其中sub_kategori.id_sub_kategori LIKE?或sub_kategori.nama_sub_kategori LIKE?或kategori.nama_kategori LIKE?按sub_kategori.id_kategori订购”;
$stmt\u page=$this->con->prepare($page\u sql);
$stmt_page->bind_param('sss',$nama_sub_kategori,$nama_sub_kategori,$nama_sub_kategori,$nama_sub_kategori);
$stmt_页面->执行();
$stmt\u页面->绑定\u结果($row);
$total_record=$row;
echo$total_记录;
$total_page=ceil($total_record/$per_page);
回声“;
回声“;
回声“;
回声“”;
回声“”;
对于($i=1;$iclose();
}
}
show_all()函数工作得非常好!它显示数据和分页没有问题
show()函数向我显示数据它也在工作!但是分页给了我空结果
我是说
echo$总记录
它给了我空分页!我的代码有问题吗?在列中添加一个名称(例如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是正确的。将
$stmt_page=$this->con prepare($page_sql);
更改为$stmt page=$con->prepare($page\sql)
不,它现在给了我一个错误:(注意:第108行C:\xampp\htdocs\whatever\login\admin\sql\sub_category.php中的未定义变量:con致命错误:无法访问第108行C:\xampp\htdocs\whatever\login\admin\sql\sub_category.php中的空属性顺便说一句,我将$con变量放在构造函数中,它正在处理其他函数,但不处理此函数。)第一:(如果你想让一个函数返回一些东西,请使用return
notecho
。不,对不起,我不想返回任何值,只想显示它。在echo之前做一个var_dump($row),告诉我它打印什么。不,不是那样的。我只写“$row”,因为我已经绑定了“$row”查询中“count(*)的结果变量,这是mysqli bind result从执行的查询中获取值的方式。我使用“count(*)和bind_result,因为mysqli中的bind_参数不支持num_行。对,所以在您的示例中(感谢提高绑定),将$row绑定到结果集。因此,要获取行数,您是否希望使用$row->num_rows而不仅仅是$row?mysqli中的bind_参数不支持num_rows,这就是为什么我必须使用“count(*)和bind_result。