我使用php v5.6.19转移服务器后出现php致命错误,之前我对以下脚本没有任何问题
从db表中获取数据:
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;
}
}
以HTML格式填充数据:
<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行的C:\ xampp \ htdocs \ project \ include \ header.php中调用boolean上的成员函数fetch_object()
答案 0 :(得分:2)
首先,您将从函数返回一个布尔值。所以,难怪PHP会这么说。
其次,你应该把事情分开。与mysqli一起使用的函数应该保留所有mysqli内容。返回只是一个数组,可以在任何地方使用而无需再次调用mysqli函数。
function get_department_list($mysqli)
{
$sql = $mysqli->query("SELECT * FROM `dept` ORDER BY `dept_id` ASC");
return $sql->fetch_all();
}
然后使用不是,而是使用foreach
foreach ($depts as $dept) ...
除此之外(对于那些可能有机会在这个问题上寻找问题答案的人),你应该总是为mysqli设置正确的错误报告,如this answer
中所示。答案 1 :(得分:0)
从false
来电
$shop->get_department_list()
时,针对该案例更新您的while循环
如果有任何数据$depts
,那么会像$dept
一样检查while($depts && $dept = $depts->fetch_object()){
java.io.FileNotFoundException: /storage/emulated/0/LazyList/-1246063373: open failed: ENOENT (No such file or directory)