2012-08-26 84 views
1

我需要将数组数据插入到MySQL DB中。我的代码在下面提供。问题是,query等于将多维数组数据插入到MySQL DB中

INSERT INTO MyTab (Array) VALUES (Array,Array,Array,Array,Array,Array,Array,Array,Array,Array,Array)

那么,为什么会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

因为他们是数组? – Ryan

+0

尝试删除$列后的括号 – Peter

回答

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)); 
+0

谢谢,我试过你的更新。这个包含一些语法错误:$ vals = implode(',',array_map(function($ arr){ \t return'('。implode(',',$ arr)。')'; \t},$值));你知道这里有什么问题吗? –

+0

另外,'$ arr'是什么?这是一个新变量吗?或者它是否与我的一些变量相对应? –

+0

@YouKuper:这是一个匿名函数。您使用的是哪个版本的PHP?如果它小于5.3,则需要将其更改为实际函数,并使用'array_map('your_function',$ values)'来代替。 – Ryan