2011-02-13 56 views
0

我有創造孩子的禮物應用程序的應用,每一個應用程序擁有者可以將自己的禮物,現在我保存的禮物在一個PHP數組:MySQL表VS PHP Array的

<?php 
$gifts_array = array(
array(>4,"Flower",>250,"5_250.jpg",301), 
array(1,"a Good Day",30,"3_30.jpg",153), 
array(2,"cat",10,"3_10.gif",139), 
array(3,"batman",20,"2_20.jpg",101), 
array(11,"White Wolf",100,"11_100.jpg",5), 
array(10,"crazy cat",30,"10_30.gif",2), 
array(8,"Gift",100,"6_100.jpg",2), 
array(12,"Car",120,"12_120.jpg",1), 
array(9,"cat 2",30,"9_30.gif",1), 
array(7,"2Pac",500,"3_500.jpg",0), 
array(6,"Outlawz",500,"4_500.jpg",0) 
); 
?> 

我需要更新禮物櫃檯每次發送,所以我必須做一個循環找到禮物,然後遞增並在文件中寫入整個數組。

這是好事,創建這個數組這樣的:

'100'=>array('gname'=>"Flower",'gpoints'=>250,'gpic'=>"5_250.jpg",'gviews'=>301), 
    100 is the Gift ID. 

什麼是最好的解決辦法: - 爲每個應用程序一個MySQL表? - 對所有應用程序使用一個表格? - 在Gift INSERT/UPDATE/DELETE之後,使用一個MySQL表來存儲所有應用程序的禮品並緩存每個應用程序的MySQL結果?

+0

一個表是不是一個壞主意。我有一個應用程序,使用幾百個表... – GolezTrol 2011-02-13 21:28:55

+0

我已經用它來存儲用戶和一些日誌,使用緩存這種解決方案是好的? – Hamza 2011-02-13 21:32:20

+0

MySQL有一個內置的查詢緩存。 – 2011-02-13 21:48:58

回答

3

只需創建一個具有相同列數的表格,再加上一個標識它對應的「應用程序」。不要爲每個應用程序創建一個新的相同表格,也不要繼續從文本文件讀取/寫入,這都是併發性和維護噩夢。

0

使用一個表每個應用

//Create a table to hold all your info 
CREATE applications (id INTEGER AUTO INCREMENT, gname VARCHAR(255), gpoints INTEGER, gpic VARCHAR(255), gviews INTEGER); 

//Increment the number of views 
UPDATE applications SET gviews=gviews+1 WHERE gname='Flower' 

//Get the names of all the applications (replace gname with what you want to get or * for all) 
SELECT gname FROM applications 

//Initially add the entries into applications 
INSERT INTO applications (gname, gpoints, gpic, gviews) VALUES ('Flower', 250, '5_250.jpg', 301)