型号:
class News
{
public $title;
public $article;
public $date;
public $published;
public $publisher;
public $image;
public static function getSingleArticle($id)
{
$query="SELECT *, date_format(date, '%D %M %Y') AS uk_date FROM news WHERE id=$id";
return mysql_query($query);
}
}
控制器:
public function editAction()
{
$row=News::getSingleArticle($_GET['id']);
$model=mysql_fetch_object($row);
include('application/view/admin/includes/header.php');
include('application/view/admin/news/update.php');
include('application/view/admin/includes/footer.php');
}
在我看来,有一个表单可以显示<?php echo $model->title; ?>
在我的数据库表中,字段publisher和image不存在,因此我收到“undefined property:stdClass”错误。但是,我需要将这些字段保留在视图中以备将来使用。每当我调用模型时,如何将公共模型变量引入模型对象的一部分? (在这种情况下,我希望它们只返回一个空值)
答案 0 :(得分:2)
这不是完美的模型类,但我认为它接近你的同时提供了更直接的界面价值:
class News
{
public $title;
public $article;
public $date;
public $published;
public $publisher;
public $image;
public function getSingleArticleRow($id)
{
$query = "SELECT *, date_format(date, '%D %M %Y') AS uk_date FROM news WHERE id=$id";
return mysql_query($query);
}
public function loadSingleArticle($id)
{
$obj = mysql_fetch_object($this->getSingleArticleRow($id));
foreach($obj as $key => $value)
$this->{$key} = $value;
}
}
控制器:
public function editAction()
{
$model = new News();
$model->loadSingleArticle($_GET['id']);
include('application/view/admin/includes/header.php');
include('application/view/admin/news/update.php');
include('application/view/admin/includes/footer.php');
}
但是你应该真正研究PDO,因为它允许更具体地从数据库中获取对象并且更加简化。
还使用参数化查询,因为SQL注入可用作内置功能,可通过$id
参数动态扩展SQL。我假设你不想那样。
答案 1 :(得分:2)
mysql_fetch_object返回stdClass的实例;你期待一个新闻实例。字段“title”在News中定义,而不是在stdClass中定义。
@hakre给出的代码可以帮到你。