循环进入PHP数组,然后循环进入SQL插入...或者其他不同的东西...请帮忙

时间:2012-01-26 18:51:26

标签: php mysql joomla

假设我有两张桌子。在表“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插件的一部分。

2 个答案:

答案 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)