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

标签 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()); 
}

但是我收到了这样的通知:

Notice: Array to string conversion in C:\xampp\htdocs\Livestockmapping(edit)\dsssawprocess.php on line 104 Unknown column 'Array' in 'field list'

最佳答案

你可以试试这个:

$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 注入(inject)。

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

关于php - 使用多维数组 PHP 插入数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39181693/

相关文章:

php - PHP 平均排名

php - 试图解码病毒

php - MYSQL/PHP 插入日期

javascript - 如何按值合并对象并更改属性类型?

javascript - 您可以使用 Array.map 来根据条件摆脱它所作用的元素吗?

javascript - PHP 数组到 Javascript 对象在 console.log 之后没有数组

php - jQuery/PHP 邮件发送的简单方法?

javascript - 为什么不将数据库查询的结果推送到变量中?

c# - 与c#计算机程序和java android应用程序的数据库连接

c - 在 VS Express 2012 中用 c 定义二维数组