将mysqli_fetch_object直接加载到类中

时间:2013-08-18 22:13:32

标签: php class mysqli load

我目前正在研究课程等。 我想从我的数据库中加载一些东西到我的对象中,如下所示:

$result = mysqli_query($link,"SELECT * FROM `recepten` WHERE `id` = $id LIMIT 1");
$obj = mysqli_fetch_object($result);

$this->id = $obj->id;
$this->titel = $obj->titel;
$this->ingredient = $obj->ingredient;
$this->beschrijving = $obj->beschrijving;
$this->van = $obj->van;
$this->tot = $obj->tot;
$this->altijd = $obj->altijd;

正如您所看到的,我正在$obj直接加载到$this。我猜测必须有一个更快的方法来做到这一点,我根本无法弄清楚如何......谷歌也无济于事。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

我认为最好的方法是定义您想要的列,并按这些列加载到$this中。请注意,如果这些未在类中定义,则它们将是您班级中的公共属性。

$columns = array('id', 'titel', 'ingredient', 'beschrijving', 'van', 'tot', 'altijd');
$selects = implode('`,`', $columns);
$result  = mysqli_query($link, 'SELECT `'.$selects.'` FROM `recepten` WHERE `id` = '.$id.' LIMIT 1');
$obj     = mysqli_fetch_object($result);

foreach ($columns as $column)
    $this->{$column} = $obj->{$column};

确保$columns不是用户输入,因为它未被转义。您还应该确保$id也是安全的。