假设我有两张桌子。在表“category_name”中,有category_id和category name字段。在表“category_subscriptions”中有字段userid和category_number。
我希望能够使用相同的用户ID为每个category_id的category_subscriptions插入一行。
考虑具有以下值的“category_name”:4,汽车,5,卡车,6,火车
“category_subscriptions(对于userid = 99)的理想输出表将具有值:99,4,99,5,99,6
而不是使用:
INSERT INTO category_subscriptions
VALUES (99,4)
INSERT INTO category_subscriptions
VALUES (99,5)
INSERT INTO category_subscriptions
VALUES (99,6)
我认为我应该使用循环,因为category.id并不总是4,5和6。我只是不确定这是否正确,我希望有人可以提供帮助。这是Joomla 1.7 / php插件的一部分。
答案 0 :(得分:2)
假设你有一个包含所有$Categories
的数组category_id
,你可以这样做:
$user_id = 99;
$Categories = array(4, 5, 6);
$sql = "INSERT INTO category_subscriptions VALUES ";
$i = 0;
foreach ($Categories as $categorie) {
if ($i++) $sql .= ", ";
$sql .= "({$user_id}, {$categorie})";
}
此代码的output是
INSERT INTO category_subscriptions VALUES (99, 4), (99, 5), (99, 6)
请注意,这会构建一个查询。您可以使用INSERT
VALUES (<line1>), (<line2>) ...
语句的多行
修改强>
如果您确实想将用户链接到每个现有类别,您也可以在纯SQL中执行此操作。
INSERT INTO `category_subscriptions` (`userid`, `category_number`)
SELECT 99, `category_id` FROM `category_name`
答案 1 :(得分:0)
也许是这样的:
<?php
$userID = '99';
$catID = array(4,5,6);
foreach($catID as $cid)
{
$value[] = '('.$userID,$cid.')';
}
mysql_query('INSERT INTO category_subscriptions (user_id,category_id) VALUES '.implode(',', $value));
?>
上面的脚本将运行mysql查询:
INSERT INTO category_subscriptions VALUES (99,4), (99,5), (99,6)