2014-02-27 53 views
0

我想構建一個可以在一個查詢本身中插入多行的SQL字符串,請查看以下代碼。
我有一個名爲使用多維數組構建查詢字符串

conversion_rates一個數組,是這樣的array(1) { [11]=> float(507.6) }

和我想執行的代碼是這樣的

public function updateExRate(){/*Updates the table in the DB with exchange rates*/ 

    $sql = 'INSERT INTO conversor '. 
      '(Sl_no , Ex_rate,Idmoneda,Time_update) VALUES'.foreach($this->conversion_rates as $k =>$v){.' (NULL ,'.$v. 
      ','.$k.','.time().');'}; 

    var_dump($this->conversion_rates); 
    echo 'Running... '.$sql.'<br>'; 
    $this->parent->parent->database->query($sql); 

} 

所以這是更新的功能db我在哪裏試圖建立一個sql語句插入多行並惰性值我使用的foreach循環內的字符串,這就是我得到的錯誤

+0

使用MySQL批量插入 http://stackoverflow.com/questions/5526917/how-to-do -a-batch-insert-in-mysql – Sajeewa

+0

我只看到JDBC示例沒有php批處理示例 – Vikram

回答

1

你可以試試這個:

$sql = 'INSERT INTO conversor "(Sl_no , Ex_rate,Idmoneda,Time_update) VALUES '; 

     foreach($this->conversion_rates as $k =>$v) 
     { 
      $sql .= '(NULL ,'.$v.','.$k.','.time().');'; 

     } 

     $sql .= '"}'; 
+0

感謝人我認爲這應該工作 – Vikram

+0

代碼中的小錯誤:) $ sql ='(NULL,'。$ v。' , '$ķ。',)的時間()。';';它應該是$ sql。='(NULL,'。$ v。','。$ k。','。time()。');';我的意思是 '。'因爲字符串被覆蓋而丟失 – Vikram

0

您可以使用此:

$sql = 'INSERT INTO conversor (`Sl_no` , `Ex_rate,Idmoneda`,`Time_update`) VALUES '; 

foreach($this->conversion_rates as $k =>$v)$sql.="(NULL ,'$v','$k',".time()."),"; 

$sql=rtrim($sql, ",").";"; 
+0

這是更好的:) – Vikram