在单个查询中将数组插入数据库表中
问题描述:
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);
}
是否有可能我可以在单个查询中插入所有条目。
答
您可以预先构建查询,像这样:
$query = "";
foreach($items as $item)
{
$query .= "insert into items (UserId,ItemId) value (2,$item);";
}
大多数数据库允许您发出多个命令,如果你用分号分隔每个。
答
是的,您的查询看起来是这样的:
INSERT INTO items (UserId,ItemId)
VALUES
(2, 'item1'),
(2, 'item2'),
(2, 'item3');
您可以构建在PHP该字符串。
答
// 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);
答
破灭是完美的..
foreach($items as $item){
$items[] = '(2,' . $item.')';
}
$q = "INSERT INTO items (userID, itemID) VALUES " . implode(', ', $items);
mysql_query($q);
如果数组值来自用户的输入,以确保正确引用它们,这样你的脚本是不容易到SQL注入。希望这对你来说不是什么新东西。 – outis 2010-05-08 07:16:27
@outout thanx的担心,但我已经照顾了! – 2010-05-09 17:31:58