我有一系列项目,如
[ITEM1,itmem2,项目3];
我必须在特定的userId:
中插入这些项目最终结果看起来像这样
UserId ItemId
2 || item1
2 || item2
2 || item3
目前我在php代码中循环遍历数组并逐个插入每个项目,例如
foreach($items as $item)
{
insert into items (UserId,ItemId) value (2,$item);
}
是否可以在单个查询中插入所有条目。
答案 0 :(得分:6)
是的,您的查询可能如下所示:
INSERT INTO items (UserId,ItemId)
VALUES
(2, 'item1'),
(2, 'item2'),
(2, 'item3');
您可以在PHP中构造该字符串。
答案 1 :(得分: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);
答案 2 :(得分:2)
Implode非常适合这个......
foreach($items as $item){
$items[] = '(2,' . $item.')';
}
$q = "INSERT INTO items (userID, itemID) VALUES " . implode(', ', $items);
mysql_query($q);
答案 3 :(得分:1)
您可以预先构建查询:
$query = "";
foreach($items as $item)
{
$query .= "insert into items (UserId,ItemId) value (2,$item);";
}
如果用分号分隔,大多数数据库都允许您发出多个命令。