作者JYHuang (夏天到了,冷不起來了說)
看板PHP
標題[討論] 複選值的儲存方式與搜尋
時間Sat Aug 30 08:29:18 2014
網頁上不管是checkbox或是multi-select,要將所選的值存入資料庫。
目前想到的方式有兩種
一種是在資料庫開個表存主鍵和值。
一個是用php的serialize(或是implode)轉成字串存在欄位。
前者比較直覺,SQL搜尋也比較容易(用WHERE `field` IN (A,B) 就好)
不過如果有一堆選項的話要開一堆表(或單一表用鍵值隔開)
在用POST更新時 除非是一次全部洗掉重加
也需要判斷(存在的取消,不在的新增)之類的情類的。
後者比較省資料庫的空間
不過搜尋跟比對上比較麻煩(要用 `field` like A or `field` like B
單筆更新的話也是整欄要洗掉重丟值
取值時則是要先判斷是否能夠unserialize.
除了這兩種方式外
不知各位還有什麼樣的作法?
用enum,set?
其實還是有點不清楚SET屬性欄位如何作複數值的條件搜尋
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.255.156.120
※ 文章網址: http://www.ptt.cc/bbs/PHP/M.1409358561.A.C94.html
※ 編輯: JYHuang (111.255.156.120), 08/30/2014 08:30:18
→ tkdmaf: 還有一個就是轉json字串了,搜尋方式和serialize相同 08/30 09:27
→ tkdmaf: 好處大概就是可以直接提供給任意語言直接分析吧。 08/30 09:27
→ tkdmaf: 缺點是……如果你進資料庫前沒先處理好中文的話...... 08/30 09:28
推 liaosankai: set,enum +1 08/30 12:39