第三次提问,不知道哪里出了问题?
视频截图:

我的代码(代码里的SQL字段名没错,我的与老师的有点不同):注意第38行的注释,没有用*,莫非是这里的原因造成的?
include_once './lib/fun.php';
//判断是否登录
if ($login = checkLogin()) {
$user = $_SESSION['user'];
}
//商品查询
$con = mysqlInit('localhost', 'root', '', 'imooc_mall');
if(!$con){
exit (mysqli_errno($con));
}
//分页:
//检查page参数
//page 就是指的第几页
$page = isset($_GET['page']) ? intval($_GET['page']) : 1;
//$page 与1 比取其中最大值
$page = max($page, 1);
//一页显示几个
$pageSize = 5;
//算法演示
// page = 1 limit 0,2 //因为偏移量是从0开始的!
// page = 2 limit 2,2
// page = 3 limit 4,2
//可以发现 limit之后的这个 偏移量 就是(page-1)*pageSize;
$offset = ($page - 1) * $pageSize;
//获得总页数
$sql = "SELECT COUNT(`id`) AS total FROM `im_goods` WHERE `status`=1";
$obj = mysqli_query($con, $sql);
//var_dump($obj);
//if (!$obj) {
// msg(2, "还没有一幅画", "publish.php");
//}
$result = mysqli_fetch_assoc($obj);
//var_dump($result);
$total = isset($result['total']) ? $result['total'] : 0;
unset($sql, $obj, $result);
//注意!!order 只能在limit之前不能再之后!
//这里这么写是老师说这样可以减少服务器的压力!
$sql = "SELECT `id`,`name`,`pic_id`,`des` FROM `imooc_mall`.`im_goods` ORDER BY `id` ASC,`view` DESC LIMIT {$offset},{$pageSize} WHERE `status`=1";
$obj = mysqli_query($con, $sql);
//if (!$obj) {
// msg(2, "还没有一幅画", "publish.php");
//}
//var_dump($obj);die;
//因为不止查询一次所以用循环
//用一个数组记录每次取出的记录
$goods = array();
while ($result = mysqli_fetch_assoc($obj)) {
$goods[] = $result;
}
//分页
$pages = pages($total, $page, $pageSize, 7);报错:

我的解决方式:
if (!$obj) {
msg(2, "还没有一幅画", "publish.php");
}但是之前的
$sql = "SELECT COUNT(`id`) AS total FROM `im_goods` WHERE `status`=1"; $obj = mysqli_query($con, $sql);
这里倒是没有报错。
最后打印下 mysqli_query后的结果一次是总页数,一次是画品详情,对应”我的代码“,简单做了注释

0
收起
正在回答
1回答
您好,根据您的报错信息为48行错误,mysqli_fetch_assoc 这个函数的第一个参数应该是个资源句柄,而在实际执行过程中,这个值实际上是个boolean(布尔值)。SQL语句错误,导致查询错误。limit条件应该位于SQL语句的最后,where条件写在order by之前。祝学习愉快!
PHP小白零基础入门
- 参与学习 人
- 提交作业 626 份
- 解答问题 4928 个
想要学好Web后端开发的中流砥柱语言,本阶段为你轻松铺就扎实的基础,从前端网页布局的搭建到后台PHP开发,助你从零基础到掌握主流开发语言。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星