PHP 2D数组到MySQL数据库

时间:2010-04-09 08:52:39

标签: php mysql database arrays insert

我有一个PHP 2D数组,许多键,每个都有一个值,我需要把它放到MySQL数据库中。

该数据库有8个字段。例如。 Field1,Field2,Field3等。
我试图确保value1 => field1, value2 =>field2, value3 => field3等等,当一条记录满了(即8个值之后)应该创建一条新记录接下来的8个值等等。

我知道第1,第9,第17,第26个值等需要一个insert语句,中间值将是一个更新语句。

最好的解决方法是什么?

5 个答案:

答案 0 :(得分:2)

如果我把这个问题弄错了,

array_chunk()就是可能的答案。

然后就是这样的

foreach ($chunks as $row) {
  array_map $row with mysql_real_escape_string
  implode to get VALUES clause
  INSERT
}

但是真正的数组样本可以节省大量的自己和其他人的时间

比如说,如果你想保存密钥而不是值,首先必须调用array_reverse。

答案 1 :(得分:1)

最简单的理解是使用计数器。像:

$cc=0;
while(...){ // Whatever your finished condition is
 if($cc==0){
  //INSERT
 }else{
  //UPDATE
 }
 $cc++;
 if($cc==8) $cc=0;
}

答案 2 :(得分:1)

$records = array_chunk($yourArray);

foreach($records as $record)
{
    $record = array_map("mysql_real_escape_string", $record);
    $q = 'INSERT INTO `yourTable` VALUES 
        '.$record[0].', 
        '.$record[1].', 
        '.$record[2].', 
        '.$record[3].', 
        '.$record[4].', 
        '.$record[5].', 
        '.$record[6].', 
        '.$record[7].', 
    ';
    $res = mysql_query($q);
}

答案 3 :(得分:0)

  

我有一个PHP 2D数组,许多键,每个都有一个值,我需要把它放到MySQL数据库中。

听起来很奇怪 - PHP不做二维数组。只有嵌套数组。

  

我知道第1,第9,第17,第26个值等需要插入声明

我认为这意味着你没有2D数组 - 你有一个2D数据集映射到非嵌套的PHP数组....在这种情况下:

for ($x=0; $x<count($data)/8; $x+=8) {
     $qry="INSERT INTO sometable (f1, f2, f3,f4,f5,f6,f7,f8) VALUES (";
     $join='';
     for ($y=0; $y<8; $y++ ) {
       $qry.=$join . prep_val($data[$x+$y]);
       $join=',';
     }
     mysql_query($qry);
}

(其中prep_val枚举字符串并转义元字符)

下进行。

答案 4 :(得分:0)

我认为你应该保留最后一行插入行的db id,以及该行中有多少字段是免费的。

这可以让您在将新数据放入db时进行适当的更新和/或插入。

要将数组拆分为多个部分,您可以使用array_slice() array_splice()array_chunk()个函数。