我正在尝试列出数组的索引,并且它一直在我面前抛出错误。
我收到此错误:
遇到PHP错误 严重性:通知
消息:未定义索引:发件人
现在提供一些代码详细信息: 我的打印行:
<div class="left"><label>Afsender: </label><p><?=$reservation['sender'] . ' (' . $reservation['email'] . ')'?></p></div></pre>
我的控制器:(使用phil sturgeon的CodeIgniter模板库)
public function readReservation($id)
{
$data['reservation'] = $this->reservation_model->getReservation($id);
$this->template->build('admin/readReservation_view', $data);
}
我的模特:
public function getReservation($id)
{
$query = $this->db->where('id', $id)->get('ita_reservations');
if ($query->num_rows > 0)
{
return $query->result();
}
else
return false;
}
我的sql:
CREATE TABLE IF NOT EXISTS `ita_reservations` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`sender` varchar(200) NOT NULL,
`email` varchar(200) NOT NULL,
`date` varchar(200) NOT NULL,
`time` varchar(200) NOT NULL,
`persons` varchar(200) NOT NULL,
`phone` varchar(200) NOT NULL,
`message` varchar(1000) NOT NULL,
`time_received` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`confirmed` tinyint(1) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ;
现在令我感到困惑的是,相同的代码在其他地方工作,但使用不同的变量名称。为了增加我的困惑,这是我印刷品上方的var_dump
:
array(1){[0] =&gt; object(stdClass)#42(10){[“id”] =&gt; string(1)“1” [ “发件人”] =&GT; string(7)“Kenneth”[“email”] =&gt;串(17) “zungate@gmail.com”[“date”] =&gt; string(10)“23/05/2013”[“time”] =&gt; string(5)“18:00”[“人员”] =&gt; string(1)“4”[“phone”] =&gt;串(8) “30243681”[“message”] =&gt; string(12)“Ja nemlig ja”[“time_received”] =&gt; string(19)“0000-00-00 00:00:00”[“确认”] =&gt; string(1)“0”}}
发件人索引显然在那里,并且数组显然已正确加载。 (所有索引都会抛出错误,而不仅仅是发件人)。
发生了什么事,我错过了什么?是的,我知道我应该检查isset
或empty
,但它存在,如果索引不存在则无法加载页面,因此检查有点没有用。
答案 0 :(得分:1)
您在数组中有一个对象(请参阅var_dump
),因此要获取预订发件人,您必须使用以下内容:
$reservation[0]->sender
或者更好的是,不应该从函数返回整个结果集,而应该只返回一行(假设id是唯一的,你的查询总是只返回一行):
public function getReservation($id)
{
$query = $this->db->where('id', $id)->get('ita_reservations');
if ($query->num_rows > 0)
{
return $query->row();
}
else
return false;
}
有了这个你可以使用:
$reservation->sender