【问题标题】:Insert multidimensional array data into MySQL DB将多维数组数据插入 MySQL DB
【发布时间】:2012-08-26 15:22:19
【问题描述】:

我需要将数组数据插入 MySQL DB。下面提供了我的代码。问题是query 等于

插入MyTab(数组)值 (数组,数组,数组,数组,数组,数组,数组,数组,数组,数组,数组)

那么,为什么我得到Array 而不是数组值?

$columns = array();
    $values = array();

    $columns[] = array('Num','appearanceTime');

    $curr_time = new DateTime();
    while($row=mysql_fetch_assoc($result_arr)) {
        $values[] = array($row['Num_arr'],$curr_time);
    }

    $cols = implode(",",$columns);
    $vals = implode(",",$values);

$query = "INSERT INTO `MyTab` ($cols) VALUES ($vals)";

更新 此代码在 $vals = implode(...) 行返回内部服务器错误。

$columns = array('Num','appearanceTime','earliestTime'); $values = 数组();

$curr_time = new DateTime();
while($row=mysql_fetch_assoc($result_arr)) {
    $values[] = array($row['Num_arr'],$curr_time,$row['ETA']);
}

$cols = implode(",",$columns);

function get_values($arr) {
return '(' . implode(',', $arr) . ')';
}

$vals = implode(',', array_map('get_values', $values));

$query_queue = "INSERT INTO `MyTab` ('" . $cols . "') VALUES ('" . $vals . "')";

【问题讨论】:

  • 尝试去掉$columns后面的括号

标签: php mysql multidimensional-array


【解决方案1】:

数组中的值是数组。你也需要implode他们每个人:

$vals = implode(',', array_map(function($arr) {
    return '(' . implode(',', $arr) . ')';
}, $values));

至于栏目,我想你想要:

$columns = array('Num','appearanceTime');
$values = array();

不是:

$columns = array();
$values = array();

$columns[] = array('Num','appearanceTime');

您还需要引用所有内容以将其放入查询中。如果可以,您应该使用 PDO 或 MySQLi 和准备好的语句而不是 mysql_


鉴于 PHP 5.2,第一个示例需要更改为:

function implode_comma($arr) {
    return '(' . implode(',', $arr) . ')';
}

# ...

$vals = implode(',', array_map('implode_comma', $values));

【讨论】:

  • 谢谢,我试过你的更新。这个包含一些语法错误: $vals = implode(',', array_map(function($arr) { return '(' . implode(',', $arr) . ')'; }, $values));你知道这里有什么问题吗?
  • 另外,什么是'$arr'?它是一个新变量吗?或者它是否对应于我的一些变量?
  • @YouKuper:这是一个匿名函数。您使用的是哪个版本的 PHP?如果小于 5.3,则需要将其更改为真正的函数并改用 array_map('your_function', $values)
  • @YouKuper:你没注意。这不是get_values($values)。这是'get_values'
  • 好吧,我改成'get_values',我把函数get_values放在$vals = implode(...);现在我在 $vals = implode(...); 行得到内部服务器错误请查看完整的更新代码。
猜你喜欢
  • 1970-01-01
  • 2011-12-06
  • 2011-12-12
  • 1970-01-01
  • 2014-05-28
  • 1970-01-01
  • 1970-01-01
  • 2017-07-03
  • 1970-01-01
相关资源
最近更新 更多