SQL中有多个条目?

时间:2013-03-13 03:33:03

标签: php mysql arrays

如何在一个字段中在SQL中存储多个条目? 例如,在野外电话中,我想让用户输入更多的电话,如私人,家庭,商业等。

如何创建trat表单以及如何在sql中存储数据?

我想我可以在php中使用serialize()函数存储它们但如何制作表单并收集该信息?

Form:

Home Phone: 321321333
Other: 333213213
Add Another

另外我想让他们可以编辑名称字段,以便用户想要将Home Tel而不是Home Phone或Pager改为Other。

任何帮助? PLEASE?

3 个答案:

答案 0 :(得分:3)

在单个字段中存储多个值。您需要一个允许多个电话号码的标准化结构。 1:n的关系在这里是合适的。

user (userId PK)
userPhone (userId FK, phoneType, phoneNumber (userId, phoneType PK))

答案 1 :(得分:2)

您可以使用json_encode()json_decode()来保存和访问数据。

保存。

$phone_number = array("Home Phone" => "321321333", "Other" => "333213213");
$encoded = json_encode($phone_number);

访问。

$result = mysqli_fetch_assoc($sql);
$decoded = json_decode( $result['phone_number_mysql_fields'] );

您可以使用PHP serialize 函数在MySQL中存储数组和对象

答案 2 :(得分:1)

用户serialize(),就像你说的那样。但是,对于工作添加另一个按钮,您需要JavaScript。这是一个表格:

<form action="action.php" method="post">
    <div id="phoneNumbers">
        <input type="text" value="home phone">: <input type="text" name="0-value" value="(xxx)xxx-xxxx">
    </div>
    <button onclick="addAnother();">Add Another Phone Number</button>
    <input type="submit>
</form>

这是javascript(放入页面的标题):

<script type="text/javascript">
    var nums=0;
    function addAnother(){

        document.getElementById('phoneNumbers').innerHTML+='<input type="text" name="'+++nums+'-name">: <input type="text" name="'+nums+'-value">';

    }
</script>

这是action.php:

<?php
$arrayOfNums=array();
foreach($_POST as $curVal){
    array_push($arrayOfNums,$curVal);
}
$serializedArray=serialize($arrayOfNums);
#now do whatever code you have to add serializedArray to your database. It is a string, so this is easy.
?>

现在您的数据库中有一个序列化数组。只是unserialize()它和你有一个像这样的数组,在名称和值之间交替:'home tel','(324)444-4356','work tel','(444)546-5678'等。这是未经测试的,告诉我它是否失败。