Loop в PHP Array, затем цикл в SQL Insert ... или что-то другое ... помогите пожалуйста - PullRequest
1 голос
/ 26 января 2012

Допустим, у меня есть две таблицы.В таблице «category_name» есть поля category_id и название категории.В таблице «category_subscription» есть поля userid и category_number.

Что я хочу сделать, это вставить строку в category_subscription для каждого category_id, используя один и тот же идентификатор пользователя.

Рассмотрим «category_name»Со следующими значениями: 4, автомобили, 5, грузовики, 6, поезда

Идеальная таблица вывода для« category_subscription (для 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 ]

2 голосов
/ 26 января 2012

Предполагая, что у вас есть массив $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})";
}

Выход этого кода

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`
0 голосов
/ 26 января 2012

Может быть, что-то вроде этого:

<?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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...