2014-09-07 89 views
-1
 stdClass Object 
(
    [ids] => Array 
     (
      [0] => 12345671 
      [1] => 12345672 
      [2] => 12345673 
      [3] => 12345674 
      [4] => 12345675 
      [5] => 12345676 
      [6] => 12345677 
       . 
       . 
       .     
       . 
     ) 

我有一個很長的數組,包括用戶ID。 我想將每個數組作爲一個新行插入到mysql中。我怎樣才能做到這一點?將-large-array的值插入到mysql中?

我都試過,但它不工作

$sql = array(); 
foreach($content as $row) { 
    $sql[] = '("'.$con->real_escape_string($row['ids']).'")'; 
} 
mysql_query('INSERT INTO table (ids) VALUES '.implode(',', $sql)); 
+1

你嘗試過什麼?你在哪裏陷入特定?你爲什麼不努力工作?你有沒有讀過我們的[幫助中心](http://stackoverflow.com/help)? – PeeHaa

+0

在你的VALUES列表的每一項內都沒有括號:它是'VALUES('12345671'),(''12345672'),...''不是'VALUES'12345671',...'如果你的id列有數據類型INT,那麼也不需要圍繞這些值的單引號。用參數化預處理語句轉移到mysqli或PDO是一個好主意。 – VMai

回答

1

您將通過這樣做,得到一個列數不匹配 - 與table是一個保留字,因爲你得到的查詢看起來像

INSERT INTO `table` (ids) VALUES 12345676, 12345677 

這是錯誤的。

你需要你的結束查詢是像;

INSERT INTO `table` (ids) VALUES (12345676), (12345677) 

要用PHP實現這一點,我們可以做到以下幾點:

<?php 

$a = array("ids" => array(1,2,3,4,5,6,7,8,9)); 

$input_lines = implode(",", $a['ids']); 

echo preg_replace("/[0-9]/", "($0)", $input_lines); 

Preview

這將使所產生的PHP代碼

<?php 

$a = array("ids" => array(1,2,3,4,5,6,7,8,9)); 
$input_lines = implode(",", $a['ids']); 
$sql = "INSERT INTO `table` (ids) VALUES ". preg_replace("/[0-9]/", "($0)", $input_lines); 

Preview