1

MySQLDBに配列データを挿入する必要があります。私のコードを以下に示します。問題はquery

INSERT INTO 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)";

UPDATEこのコードは、行に内部サーバーエラーを返します$vals = implode(...)

$ columns = array('Num'、'appearanceTime'、'earliestTime'); $ values = array();

$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 に答える