第三次提问,不知道哪里出了问题?
视频截图:
我的代码(代码里的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 份
- 解答问题 4930 个
想要学好Web后端开发的中流砥柱语言,本阶段为你轻松铺就扎实的基础,从前端网页布局的搭建到后台PHP开发,助你从零基础到掌握主流开发语言。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星