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给出的代码应该对您有所帮助