PHP / MySQL:在数据库列中存储多个值

时间:2012-12-08 01:34:08

标签: php mysql database arrays

我有一个允许您输入电话号码的表单。您可以单击加号按钮并添加更多字段。我需要将所有这些值存储在数据库中,但只有一列可以执行此操作。

电话号码也是一种类型下拉列表,您可以在其中选择以下内容:移动,家庭和工作。所以我需要一种方法将每个字段的类型和数字配对,然后将所有对组合在一起。然后,当我需要信息时,能够将其全部拉出并将所有值放入数组中。几乎像加密和解密。

我想的是:

type:number;type:number;type:number;type:number;type:number;type:number

能够使用爆炸和内爆来加密和解密。

但这有多好?我还有一个搜索功能,可以搜索电话号码。我想我的方式对于搜索功能来说并不容易。

3 个答案:

答案 0 :(得分:3)

我会说这是一个坏主意。如果您计划使用有限类型的数字,例如Home,Work,Mobile等,我建议您为每个数字添加列。否则,请创建一个单独的数据库表“phone_numbers”,并将其与您的客户ID或类似信息相关联,并添加您喜欢的数字。搜索将更快,更容易实现。

如果你仍然需要将它们存储在一个字段中,那么按照你的建议使用php implode()和explode()。在我这样做的情况下,我会使用我的客户很少会想到的字符,例如管道符号“|”作为分隔符。当然我需要使用str_replace或这样的技术来过滤掉我的用户是否意外地在输入中使用了它,但最好是它的角色很少使用。

答案 1 :(得分:2)

搜索肯定不会起作用。特别是如果您使用搜索自动完成等功能,您希望能够快速选择以某些数字开头的所有数字。

有两种选择:添加更多列或为仅包含此人的类型,编号和ID的电话号码添加单独的表。

答案 2 :(得分:0)

PHP代码:

$delimiter = "|";
if (isset($_POST['editfill_mobile'])) {
        $mobileArray = $_POST['editfill_mobile'];
        $replymobile = "";
        $i = 0;
        foreach ($mobileArray as $key => $value) {
            $i++;
            $replymobile .= $value;
            $replymobile .= $delimiter;
        }
    }

将此$ replymobile存储在数据库列中。

最终,当您查询数据库时,您可能需要拆分上面的字符串以解析数据....