2013-08-18 59 views
0

我目前正在研究班等 我想從我的數據庫加載的東西進入我的對象,像這樣:負載mysqli_fetch_object直接進入

$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中。我猜測必須有更快的方式來做到這一點,我根本無法弄清楚... ...谷歌並沒有幫助。

有什麼想法?

回答

0

我認爲最好的方法是定義你想要的列,然後按這些列在你的$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也是安全的。

+0

爲什麼在屬性名稱周圍需要{}?不會$ this - > $ column = $ obj - > $列工作嗎? –

+0

這不是必須的,但是我將它們放在可以更改爲諸如'$ this - > {'prefix _'。$ column}'之類的東西。假設它是一個類,將所有列加載到類中可能會取代某些內容。 –