[討論] 複選值的儲存方式與比對
網頁上不管是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
→
08/30 09:27, , 1F
08/30 09:27, 1F
→
08/30 09:27, , 2F
08/30 09:27, 2F
→
08/30 09:28, , 3F
08/30 09:28, 3F
推
08/30 12:39, , 4F
08/30 12:39, 4F
討論串 (同標題文章)