我正在使用XAMPP 1.7.2(PHP 5.3)来扩展winxp localhost。 有一个功能很好。来自CodeIgniter模块。
function get_cal_eventTitle($year, $month){
$this->db->where('eventYear =', $year);
$this->db->where('eventMonth =', $month);
$this->db->select('eventTitle');
$query = $this->db->get('tb_event_calendar');
$result = $query->result();
foreach ($result as $row)
{
$withEmptyTitle = $row->eventTitle;
//echo $withEmptyTitle.'<br>';
$noEmptyTitle = str_replace(" ","%20",$withEmptyTitle);
$withUrlTitle = '<a href='.base_url().'index.php/calendar/singleEvent/'.$year.'/'.$month.'/'.$noEmptyTitle.'/'.'>'.$withEmptyTitle.'</a>';
//echo $withUrlTitle.'<br>';
$row->eventTitle = $withUrlTitle;
}
return $result;
}
当我将代码上传到远程服务器(PHP 5.2.9)时。它显示错误,
withEmptyTitle undefined variable
A PHP Error was encountered
Severity: Notice
Message: Undefined variable: withUrlTitle
Filename: models/calendar_model.php
Line Number: 54 // $withEmptyTitle = $row->eventTitle;
但是当我为行echo $withEmptyTitle.'<br>';
启用评论时。它在远程服务器上运行良好。
假设withEmptyTitle
回显 4月运行事件。
我不知道为什么?你能给我一些解决这个问题的建议吗?感谢您的投入。
答案 0 :(得分:1)
您所看到的可能不是错误,而是警告。
PHP可能会抛出警告,因为您正在使用尚未初始化的变量。听起来您的本地开发PHP安装可能会出现警告消息,而您的实时服务器已启用它们。 (事实上,最佳做法是反过来!)
在这种情况下,如果$withEmptyTitle = $row->eventTitle;
属性返回为未设置,$withEmptyTitle
可能没有初始化eventTitle
变量。然后,当您尝试在str_replace()
调用中使用该变量时,它会跟随行并抛出警告。
您可以通过以下方式避免此警告:
ini_set()
以关闭它。isset($withEmptyTitle)
检查变量是否在实际使用之前设置。$row
确实包含eventTitle
属性(在程序的上下文中,如果缺少,可能意味着数据不正确或数据库表设置不正确?无论如何,您可以更改要使用IFNULL()
的SQL查询,或至少确保明确查询该字段。[编辑]
我看到你编辑了这个问题。特别是,我注意到以下几点:
Line Number: 54 // $withEmptyTitle = $row->eventTitle;
我注意到//
....这是否意味着这条线被注释掉了?你有没有在服务器上得到一个副本评论?这肯定会解释你收到警告的事实!