使用多维数组PHP插入数据库

时间:2016-08-27 13:31:27

标签: php mysql arrays multidimensional-array

我有这样的数组:

Array
(
  [0] => Array
     (
       [0] => A
       [1] => 1
       [2] => Too High
     )
  [1] => Array
     (
       [0] => AB
       [1] => 7
       [2] => OK
     )
   [2] => Array
     (
       [0] => B
       [1] => 10
       [2] => Too High
      )
)

我正在尝试使用此代码将数组插入到我的数据库中,我想在没有列名的情况下执行此操作,因为可以随时更改列(用户可以在表中添加新字段),数组长度与字段数量:

if(is_array($FINALRESULT)) {
    $queryi = "INSERT INTO tempresult VALUES ";

    $value = array();
    for ($i = 0; $i < 4; ++$i) {
       for ($j=0; $j < 3; $j++) { 
          $value[] = mysql_real_escape_string("($FINALRESULT[$j])");
       }
    }
    $queryi .= implode(',', $value);

    mysql_query($queryi) or exit(mysql_error()); 
}

但是我注意到了这些:

  

注意:第104行的C:\ xampp \ htdocs \ Livestockmapping(edit)\ dsssawprocess.php中的数组到字符串转换   “字段列表”中的未知列“数组”

1 个答案:

答案 0 :(得分:2)

你可以尝试这个:

$FINALRESULT = [
    ['A', 1, 'Too High'],
    ['AB', 7, 'OK'],
    ['B', 10, 'Too High'],
];

$all_values = [];
$query = "INSERT INTO tempresult VALUES ";

foreach($FINALRESULT as $key) {
    $row_values = [];
    foreach($key as $s_key => $s_value) {
        $row_values[] = '"'.$s_value.'"';
    }
    $all_values[] = '('.implode(',', $row_values).')';
}

//Implode all rows
$query .= implode(',', $all_values);

echo $query;

<强>结果:

INSERT INTO tempresult VALUES ("A","1","Too High"), ("AB","7","OK"), ("B","10","Too High")

还使用PDO和预处理语句来避免SQL注入。

在您的代码中,您需要$FINALRESULT[$i][$j],因为它是一个2级数组。