我有两个地址输入'address1'
和'address2'
,其名称与'地址[]'相同。我想将两个输入的值放在数据库的单个地址列中,但问题是只有第二个输入的数据存储在数据库中。
index.php
$addressData = $_POST['address'];
foreach ($addressData as $addressValue) {
$query = "INSERT INTO `users` (`name` ,`address` , `birthdate` ,`age` , `coach` , `phone`,`email` ,`password`)
VALUES ( '".mysqli_real_escape_string($link, $_POST['name'])."' , '".mysqli_real_escape_string($link, $addressValue)."' ,'".mysqli_real_escape_string($link, $_POST['birthdate'])."' ,'".mysqli_real_escape_string($link, $_POST['age'])."' , '".mysqli_real_escape_string($link, $_POST['coach'])."' , '".mysqli_real_escape_string($link, $_POST['phone'])."' , '".mysqli_real_escape_string($link, $_POST['email'])."' , '".mysqli_real_escape_string($link, $_POST['password'])."')";
}

<div class="form-group row">
<label class="col-sm-2 form-control-label">Address1</label>
<div class="col-sm-10">
<input type="text" id="address" class="form-control" name="address[]" placeholder="Home address">
<span class="fa fa-map-marker"></span>
</div>
</div>
<div class="form-group row">
<label class="col-sm-2 form-control-label">Address2</label>
<div class="col-sm-10">
<input type="text" id="address2" class="form-control" name="address[]" placeholder="City,Pincode....">
<span class="fa fa-map-marker"></span>
</div>
</div>
&#13;
答案 0 :(得分:1)
这是因为你在foreach循环中插入。如果您希望将地址保存在单个表中,您可能希望首先组合地址并在foreach循环外插入。请参阅下面的更新代码
$addressData = $_POST['address'];
$address = "";
foreach ($addressData as $addressValue) {
$address .= "\n" . $addressValue;
}
$query = "INSERT INTO `users` (`name` ,`address` , `birthdate` ,`age` , `coach` , `phone`,`email` ,`password`)
VALUES ( '".mysqli_real_escape_string($link, $_POST['name'])."' ,
'".mysqli_real_escape_string($link, $address)."' ,
'".mysqli_real_escape_string($link, $_POST['birthdate'])."' ,
'".mysqli_real_escape_string($link, $_POST['age'])."' ,
'".mysqli_real_escape_string($link, $_POST['coach'])."' ,
'".mysqli_real_escape_string($link, $_POST['phone'])."' ,
'".mysqli_real_escape_string($link, $_POST['email'])."' ,
'".mysqli_real_escape_string($link, $_POST['password'])."' )";
答案 1 :(得分:0)
name属性指定元素的名称。
name属性用于引用JavaScript中的元素,或者在提交表单后引用表单数据。
2个元素的名称不应相同。
为什么不称它为Adress1和Adress2
答案 2 :(得分:0)
要在单个列中存储多个值,请创建一个存储地址的新表,并将其链接到主表。
users(pid, address)
address(fkid, address)
从示例中,通过将fkid作为地址的外键引用到表的主键来链接2个表。通过这些方式,您可以在特定ID中存储多个相同的数据。
从我的示例中取出,在插入用户表后插入它,通过以下方式获取创建的id:
$last_insert_id = mysqli_insert_id();
然后,插入地址:
foreach($addressData as $addressValue) {
mysql_query("INSERT INTO user(id, address) VALUE($last_insert_id, $addressValue);
}
它很有用,例如1个用户拥有多个电子邮件帐户或多个加入的组。并且可以以多种方式使用,而不是将其存储为以逗号分隔的文本。