2010-05-08 80 views
3

iam具有諸如在單個查詢中將數組插入數據庫表中

[item1,itmem2,item3]的項目數組;

我有在特定用戶id插入這些項目:

最終結果是這樣的

用戶ID ITEMID

2 || item1 
2 || item2 
2 || item3 

目前的IAM通過在PHP代碼陣列循環和插入的每個項目一個一個例如

foreach($items as $item) 
{ 
insert into items (UserId,ItemId) value (2,$item); 
} 

是否有可能我可以在單個查詢中插入所有條目。

+1

如果數組值來自用戶的輸入,以確保正確引用它們,這樣你的腳本是不容易到SQL注入。希望這對你來說不是什麼新東西。 – outis 2010-05-08 07:16:27

+0

@outout thanx的擔心,但我已經照顧了! – 2010-05-09 17:31:58

回答

1

您可以預先構建查詢,像這樣:

$query = ""; 
foreach($items as $item) 
{ 
    $query .= "insert into items (UserId,ItemId) value (2,$item);"; 
} 

大多數數據庫允許您發出多個命令,如果你用分號分隔每個。

6

是的,您的查詢看起來是這樣的:

INSERT INTO items (UserId,ItemId) 
VALUES 
(2, 'item1'), 
(2, 'item2'), 
(2, 'item3'); 

您可以構建在PHP該字符串。

2
 
// Prepare the items to be inserted 
foreach($items as $item) 
{ 
    $sString .= '(2,' . $item.'),'; 
} 

// Remove the last char comma from the built string 
$sString = substr($sString,0,-1); 

$sqlQuery = "INSERT INTO items (UserId,ItemId) VALUES" . $sString; 
mysql_query($sqlQuery); 
相關問題