Php 使用mysql对象返回公共模型变量

Php 使用mysql对象返回公共模型变量,php,mysql,Php,Mysql,型号: 控制器: 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 %

型号:

控制器:

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);
    }
}
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;
    }
}
在我的视图中,有一个显示属性的表单,例如


在我的数据库表中,publisher和image字段不存在,因此我得到一个“undefinedproperty:stdClass”错误。但是,我需要在视图中保留这些字段,以备将来使用。当我调用模型时,如何将公共模型变量引入到模型对象中?(在本例中,我希望它们只返回一个空值)

这不是一个完美的模型类,但我认为它与您的模型类非常接近,同时为其值提供了一个更直接的接口:

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');
}
控制器:

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);
    }
}
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;
    }
}
但是,您应该真正研究PDO,因为它允许更具体、更精简地从数据库中获取对象


还可以使用参数化查询,因为SQL注入是一种内置功能,可以通过
$id
参数动态扩展SQL。我想您不希望这样。

这不是一个完美的模型类,但我认为它与您的模型类非常接近,同时为其值提供了更直接的接口:

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');
}
控制器:

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);
    }
}
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;
    }
}
但是,您应该真正研究PDO,因为它允许更具体、更精简地从数据库中获取对象


还可以使用参数化查询,因为SQL注入是一种内置功能,可以通过
$id
参数动态扩展SQL。我假设您不希望这样。

mysql\u fetch\u对象返回stdClass的一个实例;你在等一则新闻。字段“title”是在News中定义的,而不是在stdClass中定义的


@hakre给出的代码应该对您有所帮助。

mysql\u fetch\u对象返回stdClass的实例;你在等一则新闻。字段“title”是在News中定义的,而不是在stdClass中定义的

@hakre给出的代码应该对您有所帮助