[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Разделить данные через запятую
Napst3r
Доброго времени суток. Ситуация следующая -

$item_11 = '100,500,789'

$item_11 это id аксессуаров через запятую

$sqlsale="INSERT INTO table_relations (id,product_id,product_related_id) VALUES ('$i++','$item_0','$item_11')";


В результате выполнения $sqlsale в столбец product_related_id записывается только первое значение 100, а нужно чтобы записались все значения вот в таком виде:

id product_id product_related_id
1 50 100
2 50 500
3 50 789

Как быть?
sergeiss
Ну так и сделай в VALUES не одно значение, а список значений :)
Чтобы получилось так:
INSERT .... VALUES (1, 50, 100), (2, 50, 500), (3, 50, 789)



_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Napst3r
Цитата (sergeiss @ 25.10.2016 - 17:59)
Ну так и сделай в VALUES не одно значение, а список значений :)
Чтобы получилось так:
INSERT .... VALUES (1, 50, 100), (2, 50, 500), (3, 50, 789)


Не совсем понятно, как это сделать, если обрабатывается не одна строка, а тысяча
Another Reality
Цитата (Napst3r @ 25.10.2016 - 18:12)
Не совсем понятно, как это сделать, если обрабатывается не одна строка, а тысяча

В цикле сформируй строку запроса, потом выполни.

Концепция:

$sqlsale = "INSERT INTO `qwe` (id, product_id, product_related_id) values ";
$item_11 = '100,500,789';
$vals = explode(',', $item_11);
$v = 0;

for($i = 1; $i <= 1000; $i++)
{
$mainQuery .= "($i, $item_0," . $vals[$v] . ')';

if($v < 2)
$v++;
else
$v = 0;

if($i < 1000)
$mainQuery .= ',';
}

Причеши это как надо и под разные строки.

Или используй подготовленные запросы, что, как по мне, было бы правильнее.
sergeiss
Цитата (Another Reality @ 25.10.2016 - 19:56)
    if($i < 1000)
        $mainQuery .= ',';

Вместо вставки запятой, можно нужные значения записать сначала в массив (в данном случае это будут строки), а потом использовать функцию implode() для формирования окончательной строки. Это несколько упрощает код и делает его более читаемым.
Ну и кстати, у тебя в примере в массиве 3 величины, а цикл до 1000 smile.gif Непорядок...

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Another Reality
Цитата (sergeiss @ 25.10.2016 - 21:25)
Цитата (Another Reality @ 25.10.2016 - 19:56)
    if($i < 1000)
        $mainQuery .= ',';

Вместо вставки запятой, можно нужные значения записать сначала в массив (в данном случае это будут строки), а потом использовать функцию implode() для формирования окончательной строки. Это несколько упрощает код и делает его более читаемым.
Ну и кстати, у тебя в примере в массиве 3 величины, а цикл до 1000 smile.gif Непорядок...

Да, можно через implode(), будет красивее.

Что касается цикла и массива - это все просто для примера. К тому же там перменная $v считает элементы массива, т.е. каждая третья итерация будет обнулять счетчик $v.
Я снизу подписал, чтобы причесали под несколько строк, ибо пример только для одной.
Это же было просто для ясности концепции, а не готовый код smile.gif
Napst3r
Больше спасибо, буду разбираться.
Ramzil_Nixon
Цитата (Napst3r @ 25.10.2016 - 13:24)
INSERT INTO table_relations (id,product_id,product_related_id) VALUES ('$i++','$item_0','$item_11')


Подскажите пожалуйста. Уже давно не пишу код и забыл много чего, заного собираюсь вспоминать все. И вопрос. Я не помню что я писал запись строки в муксул именно так. Вроде по другому я писал, в интернете не могу найти именно свой способ как я писал. И по другому пишется или только так?

_____________
Миллионы приходят, уходят, не в них счастье. Самым важным на свете всегда будут люди в этой комнате, вот здесь, сейчас...

user posted image
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.