将多个数字/单词存储到单个数据库字段中

时间:2013-07-09 12:36:57

标签: php mysql

目前我只是循环思考数字,然后将它们作为单独的数据行添加。

DB(managedid是ref的外键)

  ----------------------
  | managedid | option |
  |-----------|--------|
  |     2     |   3    |
  |     2     |   6    |
  |     2     |   12   |
  |     2     |   54   |
  |     2     |   123  |
  ----------------------

但是可以有很多,然后更新它我只是删除所有并重新输入。

但是,如果它可以做类似的事情:

  ------------------------------
  | managedid | option         |
  |-----------|----------------|
  |     2     | 3,6,12,54,123  |
  ------------------------------

因此,不仅减少db表中的单个项目,更新也会更简单。

此刻我会追加说'' |'在每个数字之后,它们在输出上爆炸,所以它们再次变得奇异,但是想知道是否有更好的方法

4 个答案:

答案 0 :(得分:3)

查看mySQL手册中的group_concat函数

答案 1 :(得分:1)

您可以将值与implode()的字符串组合在一起,但值得注意的是,将所有值保留在单个字段中会使搜索变得非常不切实际,因为它们无法合理地编入索引。例如,您如何找到已选择选项managedid的所有3

答案 2 :(得分:0)

您也可以尝试PHP内爆函数。

http://us2.php.net/manual/en/function.implode.php

这将采用一个数组并使用您选择的分隔符构建一个字符串。

答案 3 :(得分:0)

感谢您的回复,但由于我永远不想单独分离任何价值,我总是希望我想要沿着这条路走下去的总价值。

所以我从最初的想法出发,循环查看结果并将它们加在一起,通过“|”分隔它们。

然后使用php函数explode将它们分开,以便在我的表单中使用。

添加它们:

     foreach ($options as $k => $opt) { $displayOptions .= $opt . '|'; };

得到他们

     $opts = explode('|',$displayOptions['options']);