1

我需要将数组数据插入 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 . "')";
4

1 回答 1

2

数组中的值是数组。你也需要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));
于 2012-08-26T15:29:48.453 回答