2012-08-26 82 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