2013-12-21 54 views
2

我想要做什麼: 從函數返回一個queryfetch,並根據它的「名稱」從特定的表格中輸出內容。返回queryfetch並輸出特定行

The database: 
Rownames  Input1  Input2 
id   1   2 
name   defense attack 
value  10   15 

我使用目前的功能是這樣的:

public function stat_query($stat_name, $user_id = null) 
{ 
$core = db_core::getInstance(); 
$query = $core->conn->query("SELECT user_stats.value as value FROM user_stats INNER JOIN stats ON user_stats.stat_id = stats.id WHERE user_stats.user_id = ".$this->get_user($user_id) AND stats.name = '".$stat_name."'"); 
$value = $query->fetch(PDO::FETCH_ASSOC); 
return $value; 
} 
與上面的功能

現在,我將不得不查詢數據庫,每次我需要一個統計。但我希望查詢數據庫一次並存儲它,以便我可以稍後調用特定屬性。

說我想輸出防禦;我會輸出$ storedquery ['defense'],攻擊也是一樣。 這樣做的最好方法是什麼?

+1

我認爲你正在尋找fetchAll(http://www.php.net/manual/en/pdostatement.fetchall.php)?或者,如果您要查找存儲空間,則可以在會話中存儲值。 ($ _ SESSION) – RobotRock

+1

同意RobotRock。如果您希望將任何內容存儲在應用程序中以供稍後使用,並且您沒有使用緩存。嘗試SESSION的。 – daremachine

+0

只是爲了澄清;最好的方法是將數據存儲在會話數組中嗎? – Mathias

回答

0

如果您想在同一次執行中多次使用它,請創建一個全局變量並將其設置爲false。

然後改變功能是:

public function stat_query($stat_name, $user_id = null) 
{ 
    if($yourGlobalVar){ 
     return $yourGlobalVar; 
    else{ 
     $core = db_core::getInstance(); 
     $query = $core->conn->query("SELECT user_stats.value as value FROM user_stats INNER JOIN stats ON user_stats.stat_id = stats.id WHERE user_stats.user_id = ".$this->get_user($user_id) AND stats.name = '".$stat_name."'"); 
     $value = $query->fetch(PDO::FETCH_ASSOC); 
     return $value; 
    } 
} 

如果您想要保存它的會話的持續時間,使用的會話。使用SESSION需要幫助嗎?