我有一个表单,我需要在数据库中拆分成两个表。 tbl_1
由每列的单个值组成,然后tbl_2
由每列的多个值组成。我知道如果我每列传递多个数据,我将违反数据库中的规范化。所以我做了什么我将tbl_1
引用到tbl_2
。问题是我不知道如何将数组中的每个值保存到列。示例分类有4个值,我需要在tbl_2
中保存并将其引用到tbl_1
。我怎么能这样做?我正在使用PDO
。
HTML片段:
<input type="text" name="classification[]" placeholder="Classification No. 1" />
<input type="text" name="classification[]" placeholder="Classification No. 2" />
<input type="text" name="classification[]" placeholder="Classification No. 3" />
<input type="text" name="classification[]" placeholder="Classification No. 4" />
因此,对于每个值,将创建4个具有相同id的行,以引用tbl_1
。它应该是这样的:
答案 0 :(得分:0)
我只是在演示......尝试这样的事情
<?php
$x = 1;
$y = 1;
$classification = array('class1', 'class2');
$area = array('area1', 'area2');
$market = array('market1', 'market2');
$no_of_loop = count($classification); //4
while($no_of_loop)
{
$query = insert into (`tbl_1_id`, `tbl_2_id`, `Classification`, `Area`, `Market`) values($x, $y, $classification, $area, $market);
$x++;
}
$y++;
mysqli_query($query, $con);
?>
答案 1 :(得分:0)
所以,你input
可以是:
<input type="text" name="data[classification][]" placeholder="Classification No. 1" />
<input type="text" name="data[area][]" placeholder="Area No. 1" />
<input type="text" name="data[market_value]" placeholder="Market Value No. 1" />
然后,使用for
循环,您可以insert
将它们转移到database
:
$data = 'your array here whatever you receive using GET/POST';
for($i=0; $i<count($data['classification']); $i++){
$sql = INSERT INTO (`tbl_1_id`, `tbl_2_id`, `classification`, `area`, `market_value`) VALUES (`auto_increment_id`, `value_of_table1`, $data['classification'][$i], $data['area'][$i], $data['market_value'][$i]);
}