我需要将数组数据插入MySQL DB。我的代码如下。问题是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 . "')";
答案 0 :(得分: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));