首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我的函数在移动到新服务器后返回false。

我的函数在移动到新服务器后返回false。
EN

Stack Overflow用户
提问于 2016-03-22 06:45:20
回答 2查看 22.2K关注 0票数 0

在使用php v5.6.19传输服务器后,我得到了php致命错误,在此之前,我对以下脚本完全没有问题

从db表中获取数据:

代码语言:javascript
复制
function get_department_list($mysqli)
{
    $sql = $mysqli->query("SELECT * FROM `dept` ORDER BY `dept_id` ASC");

    if($sql->num_rows > 0){
        return $sql;
    }else{
        return false;
    }
}

填充数据

代码语言:javascript
复制
<ul class="department overflow-scroll text-center">
    <?php
    $shop = new Shop;

    $depts = $shop->get_department_list($mysqli);
    while($dept = $depts->fetch_object()){
        echo '<li><a href="'.baseurl.'/shop/'.strtolower(str_replace('\'','',$dept->dept_name)).'">'.$dept->dept_name.'</a></li>';
    }
    ?>
</ul>

最后,我犯了一个错误:

致命错误:在第206行的布尔值上调用成员函数fetch_object()

EN

回答 2

Stack Overflow用户

发布于 2016-03-22 06:55:58

首先,从函数返回一个布尔值。所以,难怪PHP会这么说。

第二,你应该把事情分开。一个与mysqli一起工作的函数应该把mysqli的所有东西都保存在里面。返回只是一个数组,可以在任何地方使用,而不需要再次调用mysqli函数。

代码语言:javascript
复制
function get_department_list($mysqli)
{
    $sql = $mysqli->query("SELECT * FROM `dept` ORDER BY `dept_id` ASC");
    return $sql->fetch_all();
}

然后用的不是时间,而是时间

代码语言:javascript
复制
foreach ($depts as $dept) ...

此外(对于那些有机会在这个问题上寻找答案的人来说),你应该为mysqli设置正确的错误报告,就像在this answer中显示的那样。

票数 4
EN

Stack Overflow用户

发布于 2016-03-22 07:11:33

当您从false调用中获得$shop->get_department_list()时,为该情况更新while循环

更新时,像这样检查$depts是否有任何数据,然后获取$dept

代码语言:javascript
复制
while($depts && $dept = $depts->fetch_object()){
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36147802

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档