2010-05-08 81 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); 
相关问题