foreach multidimensional Array和insert database

时间:2013-07-19 15:38:15

标签: php

遇到了问题。 我有这样的形式

<input name="product[sub_name][]">
<input name="product[price][]">
<input name="product[random][]">
<input name="product[just_field][]">

我可以按“添加更多”添加此表单的多个块。 接收posta数据我做的事情。

$field = $_POST['product'];

foreach ($field as $key => $values) {

    foreach($values as $value) {

        $key.' - '.$value;


    }

}

我需要代码在数据库中插入多行,具体取决于发布的行。问题是,我不知道如何获得,例如,“价格”。目标是在数据库中插入所有数据。希望你们理解我的逻辑。

这是print_r输出。我可以获得比两个更多的可能性

Array ( 
    [sub_name] => Array ( [0] => New car [1] => New bike )
    [standart_price] => Array ( [0] => 100 [1] => 300 )
    [cupon_price] => Array ( [0] => 50 [1] => 200 )
    [max_purchases] => Array ( [0] => 1000 [1] => 100 )
    )

4 个答案:

答案 0 :(得分:0)

尝试使用

print_r($_POST["product"]);

输出整个数组。

您确定公式传输的值是否传递到$ _POST?

请你发布输出。

答案 1 :(得分:0)

检查出来..

<?

//Connect to DB.
$link = mysqli_connect("HOST","USERNAME","PASSWORD","DATABASE") or die("Error " . mysqli_error($link));

//Consider your table structure in MYSQL. Don't depend on this structure.
//CREATE TABLE TBL1(SLNO PRIMARY KEY AUTO_INCREMENT, DETAIL_VALUE VARCHAR(200));
foreach( $_POST['product'] as $key => $value )
{
    //Get specific Tag.
    if( $key == 'price')
    {
        //Creating Query to insert. 
        $query = "insert into TBL1('DETAIL_VALUE') VALUES('".addslashes($value)."')";
        $mysqli_query($link, $query) or die;
    }
}


?>

有关查询或php的更多详细信息:请参阅PHP.net。

答案 2 :(得分:0)

$mysqli = new mysqli("localhost", "root", "password", "db name");

$field = $_POST['product'];

foreach ($field['price'] as $idx => $price)
{
    $sub_name = $field['sub_name'][$idx];
    $random = $field['random'][$idx];
    $just_field = $field['just_field'][$idx];

    $sql = "INSERT INTO table (sub_name, random, just_field, price) VALUES ('{$sub_name}','{$random}','{$just_field}','{$price}')";

    $mysqli->query($sql);


}

答案 3 :(得分:0)

如果您重新组织数组以首先包含索引,则可以获得更有序的结果:

<input name="product[$index][sub_name]">
<input name="product[$index][price]">
<input name="product[$index][random]">
<input name="product[$index][just_field]">    

每次添加新产品时都会使用javascript更改索引,这样,当您在php中收到数据时,您可以执行以下操作:

$products = $_POST['product'];

foreach ($products as $product)
{
    $sub_name = $product['sub_name'];
    $random = $product['random'];
    $just_field = $product['just_field'];

    $sql = "Your SQL query"

    $mysqli->query($sql);
}

也许需要更多的工作来改变使用javascript的html索引,但你的代码变得更加清晰。

P.S。这是一般的想法,我不测试它。