作者ireullin (raison detre)
看板PHP
标题Re: [请益] codeigniter跟资料库取资料时会报错
时间Tue Jul 2 06:48:50 2013
我根据版友建议使用了var_dump查看资料内容
内容是正确的
array(31) { [0]=> object(stdClass)#18 (2) { ["specialty_id"]=> string(1) "1"
["specialty_name"]=> string(9) "小儿科" } [1]=> object(stdClass)#19 (2) {
["specialty_id"]=> string(1) "2" ["specialty_name"]=> string(15) "心脏血管科"
} [2]=> object(stdClass)#20 (2) { ["specialty_id"]=> string(1) "3"
["specialty_name"]=> string(15) "代谢内分泌" } ....後面省略
我将比较完整的错误资讯与程式码贴上来
再请大家给我点意见
错误讯息
A PHP Error was encountered
Severity: Notice
Message: Undefined offset: 31
Filename: controllers/specialty.php
Line Number: 61
A PHP Error was encountered
Severity: Notice
Message: Trying to get property of non-object
Filename: controllers/specialty.php
Line Number: 61
A PHP Error was encountered
Severity: Notice
Message: Undefined offset: 31
Filename: controllers/specialty.php
Line Number: 62
A PHP Error was encountered
Severity: Notice
Message: Trying to get property of non-object
Filename: controllers/specialty.php
Line Number: 62
A PHP Error was encountered
Severity: Notice
Message: Undefined offset: 31
Filename: controllers/specialty.php
Line Number: 63
A PHP Error was encountered
Severity: Notice
Message: Trying to get property of non-object
Filename: controllers/specialty.php
Line Number: 63
以下为controller的程式码
发生错误的61-63是for($i=0; $i<$page_rows; $i++) 中间的内容
public function show($page=1)
{
$this->VerifyAndReturnLogin();
echo $this->load->view('v_header','',true);
echo $this->load->view('v_menu','',true);
echo $this->draw_content($page);
echo $this->load->view('v_footer','',true);
}
private function draw_content($page)
{
$this->load->model('SpecialtyModel');
$query = $this->SpecialtyModel->selectAll();
$row = $query->result();
$cnt = $query->num_rows();
var_dump($row);
$page_rows = 50; // 每页几行
$final = ($cnt%$page_rows)==0?
intval($cnt/$page_rows):intval($cnt/$page_rows)+1;
$next = $page==$final?$page:$page+1;
$last = $page==1?$page:$page-1;
$arrlink = array();
array_push($arrlink, '<a href="' . site_url("/specialty/show/1") .'">第一页
</a> ');
array_push($arrlink, '<a href="' . site_url("/specialty/show/$last") .'">上一
页</a> ');
array_push($arrlink, '<select onchange="window.location=this.value;" >');
for($i=1; $i<=$final; $i++)
{
if($i==$page) array_push($arrlink, '<option selected
value="'.site_url("/specialty/show/$i")."\" >第 $i 页</option>");
else array_push($arrlink, '<option
value="'.site_url("/specialty/show/$i")."\" >第 $i 页</option>");
}
array_push($arrlink, "</select> ");
array_push($arrlink, '<a href="' . site_url("/specialty/show/$next") .'">下一
页</a> ');
array_push($arrlink, '<a href="' . site_url("/specialty/show/$final").'">最後
一页</a> ');
$this->load->library('table');
$this->table->set_template(array('table_open'=>'<table
class="CLS_SHOWTABLE">'));
$this->table->set_heading('edit', 'specialty_id','医疗科别' );
for($i=0; $i<$page_rows; $i++)
{
$index = ($page-1)*$page_rows+$i;
$this->table->add_row(
'<a href="' . site_url('specialty/edit/' . $row[$index]->specialty_id ).
'">编辑</a> <a href="' . site_url('specialty/delete/' .
$row[$index]->specialty_id) . '">移除</a>',
$row[$index]->specialty_id,
$row[$index]->specialty_name
);
}
$table = $this->table->generate();
$html = array(
"<h2>specialty</h2>",
"<hr />",
implode($arrlink) . ' <a href="'. site_url('specialty/edit') .
'">新增一笔资料</a>',
$table,
implode($arrlink)
);
return implode($html);
}
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 219.85.131.202
1F:→ liaosankai:从错误讯息来看,似乎是索引多了1,foreach也这样吗? 07/02 08:19
2F:→ liaosankai:从你的var_dump出来的array(31),所以最终索引应该是30 07/02 08:20
3F:→ ireullin:是的....foreach也是一样的错误讯息 07/02 09:09
4F:→ ireullin:是否有可能result的结果被gc提前回收 07/02 09:09
5F:→ ireullin:若有可能....是否有方法去朝这方向侦错 07/02 09:10
6F:→ ireullin:$index的计算逻辑写错了,造成溢出阵列 07/02 09:43
7F:→ ireullin:让大家麻烦了,真不好意思 07/02 09:43