2016-06-10 89 views
2

我有一個表,每行包含150列,所以我需要插入150個值。通過PHP向多個列添加多個值到SQL

我知道插入3列的方式會是這樣:

$query="INSERT INTO table_name 
(data1,data2,data3) 
VALUES 
('data_part_1', 'data_part_2', 'data_part_3')"; 

但如果我插入150個值將是:

$query="INSERT INTO table_name 
(data1,data2,data3,...,data150) 
VALUES 
('data_part_1', 'data_part_2', 'data_part_3',...,'data_part_150')"; 

而且需要花費大量的時間。

我該如何更有效地做到這一點?

感謝

+0

聽起來像你的數據庫模式需要重新規範化。儘管這是一個很大的話題,但這個問題太模糊了,無法嘗試並具體說明它。 –

+1

如果你有一個數組在'field_name' =>'value'對(我希望你這樣做),並且你正在使用PDO(你應該是這樣),那麼你可以這樣做:http:// stackoverflow.com/a/13508045/870729 –

回答

1

當你說要花很多時間,我盤算,你說這需要太多的時間寫出來的查詢150個變量,而不是計算時間(150個變量不花那麼久)。如果是這種情況,寫這個的最好方法是將列名放入一個數組中,並將數據(或者稱爲data_parts)放入另一個數組中,並使用for循環。

$database = "my_database"; 
$table = "my_table"; 
$data = "SELECT * FROM $database.INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = $table"; 

$query = ""; 
for ($i = 1; $i <= 150; $i++) { 
    $query .= "INSERT INTO table_name 
     ($data[$i]) 
    VALUES 
     ($data_part[$i]"; 
} 

備註:表中有150列並不是設計數據庫的最佳方法。您可能想考慮將其重新創建到多個表中。