从php数组插入MySQl表元素

时间:2012-10-06 09:16:15

标签: php mysql arrays insert foreach

所以,我有这个数组,我需要插入我的数据库。我正在使用foreach,但我不能让它运行两个值。

简单数组如下所示:

    Array
(

    [1] => Array
        (
            [id_produs] => 'value'
            [id_pret] => 'value'
        )

    [2] => Array
        (
            [id_produs] => 'value'
            [id_pret] => 'value'
        )
.
.
.
    [i] => Array
        (
            [id_produs] => 'value'
            [id_pret] => 'value'
        )


)

这就是我现在所得到的:

foreach ($vl['id_produs'] as $prds=>$val) 
        {
       if($val<>'') mysql_query("INSERT into db set  id_pachet='".$id_pachet."', id_produs='".$val."'"); 
        foreach ($vl['id_pret'] as $prdsv=>$valv) {
            if($valv<>'') mysql_query("INSERT into db  set id_pachet='".$id_pachet."',  id_pret='".$valv."'");
        }
        }

其中:

$vl = array();
    $vl = $_POST;

我做错了什么?

孔阵列如下所示:

Array
(
    [nume_pachet] => Test pachet nou
    [id_produs] => Array
        (
            [0] => 0
            [1] => 41
            [2] => 135
        )

    [id_pret] => Array
        (
            [0] => 0
            [1] => 0
            [2] => 157
        )

    [pret_pachet] => 99.00
    [id_moneda] => 1
    [descriere_pachet] => Lorem ipsum dolores
    [activ] => 1
)

我要插入值的数据库具有以下结构:

ID id_pachet id_produs id_pret

所以在一个软件包(id_pachet)中我可以拥有更多可以有多个价格的产品(id_produs)(id_pret)

例如:

id  id_pachet   id_produs   id_pret
1   3       13              1
2   3       13              2
3   3       14              0

问题是,如果这样做:

foreach ($vl['id_produs'] as $prds=>$val) 
     {
   if($val<>'') mysql_query("INSERT into erad_produse_pachete_str set id_pachet='".$id_pachet."',  id_produs='".$val."'"); 

    }   

它适用于id_produs,但我需要同时插入id_pret

UPDATE!

我从哥哥那里得到了一些帮助。这对我有用。如果您可以将它应用于您的案例,我希望它有所帮助

$produse = $_POST['id_produs'];
$preturi = $_POST['id_pret'];


if(count($produse))
foreach ($produse as $key=>$id_produs) {

    if($id_produs>0){
        $id_pret = isset($preturi[$key]) ? $preturi[$key] : 0;
        mysql_query("INSERT INTO erad_produse_pachete_str (id_pachet,id_produs,id_pret) VALUES ('{$id_pachet}', '{$id_produs}', '{$id_pret}')"); 
    }
}

2 个答案:

答案 0 :(得分:0)

检查您的插入查询,这是错误的。

例如,它应该是, INSERT INTO table (field1, field2,.....) VALUE (value1, value2,.....)

答案 1 :(得分:0)

有几件事是错的:

  • id_produs的值是数字,你不能引用它们
  • 插入查询的语法错误
  • 对foreach的循环不正确。

这应该让你前进:

foreach ($vl['id_produs'] as $val) {
  if($val<>'') 
    mysql_query("INSERT into `db` ( id_produs ) VALUES( $val )"); 
}

foreach ($vl['id_pret'] as $valv) {
  if($valv<>'') 
    mysql_query("INSERT into `db` ( id_pret ) VALUES( $valv )");
}