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

使用多维数组PHP插入数据库,php,mysql,arrays,multidimensional-array,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] =>

我得到的数组是这样的:

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()); 
}
if(is_数组($FINALRESULT)){
$queryi=“插入tempresult值”;
$value=array();
对于($i=0;$i<4;++$i){
对于($j=0;$j<3;$j++){
$value[]=mysql\u real\u escape\u字符串($FINALRESULT[$j]);
}
}
$queryi.=内爆(',',$value);
mysql_查询($queryi)或退出(mysql_error());
}
但我得到的通知如下:

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

你可以试试这个:

$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和prepared语句来避免SQL注入

在您的代码中,您需要
$FINALRESULT[$i][$j]
,因为它是一个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和prepared语句来避免SQL注入


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

请开始使用
mysqli.*
PDO
,因为
mysql.*
已被弃用并在中删除PHP7@SuperDJ啊,我明白了,谢谢你的建议。你试图在字符串中插入一个数组,你需要使用内爆,json_编码或序列化,以便从数组转换为stirng。此外,当您要从数据库获取数据时,必须将数据转换回数组。请开始使用
mysqli.*
PDO
,因为
mysql.*
已被弃用并在中删除PHP7@SuperDJ啊,我明白了,谢谢你的建议。你试图在字符串中插入一个数组,你需要使用内爆,json_编码或序列化,以便从数组转换为stirng。此外,当您要从数据库获取数据时,必须将数据转换回数组。我刚刚尝试了您的,但出现了此错误(您的SQL语法有错误;请查看与您的MySQL服务器版本相对应的手册,以获取可在“high.”附近使用的正确语法),我尝试了使用
$FINALRESULT[$I][$j]
但是运气不好..好吧,我把括号放错地方了。试试这个,我刚刚又试了一次,没有错。但是
tempresult
表仍然是空的,这是未插入的数据。我很确定您的表应该可以工作。但是我不知道数据插入的错误在哪里,为什么欢迎你。但是您确实必须使用准备好的语句来避免SQL注入,因为mysql_*函数已被弃用。你可以改用mysqli,或者更好的PDO。我刚刚试过你的PDO,但出现了这个错误(你的SQL语法有错误;请查看与MySQL服务器版本相对应的手册,以了解使用接近“high.”的正确语法),我试过使用
$FINALRESULT[$I][$j]
,但运气不好。好的,我把括号放错地方了。试试这个,我刚刚又试了一次,没有错。但是
tempresult
表仍然是空的,这是未插入的数据。我很确定您的表应该可以工作。但是我不知道数据插入的错误在哪里,为什么欢迎你。但是您确实必须使用准备好的语句来避免SQL注入,因为mysql_*函数已被弃用。您可以使用mysqli,甚至更好的PDO。