如何在一个字段中在SQL中存储多个条目? 例如,在野外电话中,我想让用户输入更多的电话,如私人,家庭,商业等。
如何创建trat表单以及如何在sql中存储数据?
我想我可以在php中使用serialize()函数存储它们但如何制作表单并收集该信息?
Form:
Home Phone: 321321333
Other: 333213213
Add Another
另外我想让他们可以编辑名称字段,以便用户想要将Home Tel而不是Home Phone或Pager改为Other。
任何帮助? PLEASE?
答案 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'等。这是未经测试的,告诉我它是否失败。