如何将数组中的每个数据保存到数据库中

时间:2014-12-14 12:18:29

标签: php mysql arrays pdo

array of data

我有一个表单,我需要在数据库中拆分成两个表。 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。它应该是这样的:

enter image description here

2 个答案:

答案 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)

请尝试multidimensional array

所以,你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]);
}