2012-09-25 57 views
1

是否有可能要求我的數據庫中的所有數據,並從中創建對象並將其保存到數組或其他東西,所以我只需要調用數據庫一次,然後我只使用我的本地數組?如果是的話,它是如何完成的?在PHP中緩存來自MySQL的數據?

public function getAllProjects(){ 

    $query="SELECT * FROM projects"; 
    $result=mysql_query($query); 
    $num=mysql_numrows($result); 
    while ($row = mysql_fetch_object($result)) { 
     // save object into array 
    } 
} 

public function fetchRow($row){ 
    include("Project.php"); 
    $project = new Project(); 

    $id=$row->id; 
    $project->setId($id); 

    $title=$row->title; 
    $project->setTitle($title); 

    $infos=$row->info; 
    $project->setInfo($infos); 

    $text=$row->text; 
    $project->setText($text); 

    $cate=$row->category; 
    $project->setCategory($cate); 

    return $project; 
} 

如果我有例如這個代碼。如何將對象正確存儲到數組中,從哪裏獲取數據?爲什麼我不能製作多個「項目」類型的對象?

+0

你想要Mysql Cache嗎? –

+0

是的,當然,這是可能的。你有什麼問題執行這樣的事情?但鏡像*整個*數據庫似乎毫無意義。那麼數據庫是什麼? – deceze

+0

將其添加到'$ _SESSION'或僅使用memcached。視圖通常也是速度的一個很好的解決方案。 –

回答

1

您應該在php中使用$_SESSION變量,要使用它們,請在代碼的開頭添加一個session_start()。然後,你可以用$_SESSION['selectaname'] = yourvar

沒有設置瓦爾阻止你做一個SQL查詢像"SELECT username FROM users WHERE id = 1"然後設置一個$_SESSION['user'] = $queryresult

,那麼你也會有這樣的:

echo $_SESSION['user']; 

"mylogin" 
+0

我可以從不同的php文件訪問這個變量嗎? – 4ndro1d

+0

如果你把session_start();之前,所有的東西在一個PHP文件的頂部... – Chris

+0

是的,你只需要使用session_start()每次你向服務器發出請求,所以它取決於你的代碼,並且不要忘記把您的代碼頂部的session_start – Weacked

2

讓我們忽視的事實是你將耗盡內存。

如果您擁有數組中的所有內容,則不再具有關係數據庫的功能。
在php中嘗試搜索多兆字節,多維數組,併爲延長的休息時間做好準備。 如果你在做這樣的事情是因爲你覺得數據庫很慢......你應該瞭解數據標準化並正確使用索引。
沒有NoSQL不是答案。
很抱歉彈出您的氣球。

編輯添加:你可以使用memcache來存儲一些昂貴的進程的最終產品。不要打擾存儲瑣碎查詢的結果,mysql的內部緩存對於那些非常優化。

+0

我不需要數據庫來編輯數據或有點。我只是在那裏有我的項目的信息,你可以在我添加的示例代碼中看到。我有標題,信息和文字。我試着每次爲我點擊的每個項目調用數據庫,這種情況下標題,信息和文本隨機交換,不要引用正確的項目。我無法弄清楚爲什麼。 – 4ndro1d

+0

這是一個完全不同的問題,你會發布SHOW CREATE TABLE項目的輸出嗎? –

+0

和print_r($ object_array)的輸出我正在讀取數組的數字id而不是數據庫的一個 –