0

我有一个表格可以让你输入电话号码。您可以单击加号按钮并添加更多字段。我需要将所有这些值存储在数据库中,但只有一列可以完成。

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

我在想类似的东西:

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

能够使用explode和implode进行加密和解密。

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

4

3 回答 3

4

我会说这是个坏主意。如果您计划使用有限类型的号码,例如家庭、工作、手机等,我建议您为每个号码添加列。否则,创建一个单独的数据库表“phone_numbers”并将其与您的客户 ID 或类似名称相关联,并添加您喜欢的任意数量的数字。搜索将更快,更容易实现。

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

于 2012-12-08T01:37:24.810 回答
2

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

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

于 2012-12-08T01:38:22.517 回答
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 按原样存储在数据库列中。

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

于 2012-12-11T07:58:45.440 回答