Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Разделить данные через запятую
Napst3r  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 22
Пользователь №: 42366
На форуме: 10 месяцев, 22 дня
Карма:




Доброго времени суток. Ситуация следующая -

$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

Как быть?

Это сообщение отредактировал Napst3r - 25.10.2016 - 17:25
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
sergeiss  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Сидел он, дум великих полон - и вдаль глядел
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 14966
Пользователь №: 4190
На форуме: 8 лет, 9 месяцев, 27 дней
Карма: 443




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



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

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

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

user posted image
PMICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Napst3r  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 22
Пользователь №: 42366
На форуме: 10 месяцев, 22 дня
Карма:




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


Не совсем понятно, как это сделать, если обрабатывается не одна строка, а тысяча

Это сообщение отредактировал Napst3r - 25.10.2016 - 18:12
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Another Reality  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Старик
***

Профиль
Группа: Пользователь
Сообщений: 124
Пользователь №: 41606
На форуме: 1 год, 4 месяца, 17 дней
Карма: 5




Цитата (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 .= ',';
}

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

Или используй подготовленные запросы, что, как по мне, было бы правильнее.

Это сообщение отредактировал Another Reality - 25.10.2016 - 19:57
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
sergeiss  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Сидел он, дум великих полон - и вдаль глядел
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 14966
Пользователь №: 4190
На форуме: 8 лет, 9 месяцев, 27 дней
Карма: 443




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

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


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

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

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

user posted image
PMICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Another Reality  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Старик
***

Профиль
Группа: Пользователь
Сообщений: 124
Пользователь №: 41606
На форуме: 1 год, 4 месяца, 17 дней
Карма: 5




Цитата (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
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Napst3r  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 22
Пользователь №: 42366
На форуме: 10 месяцев, 22 дня
Карма:




Больше спасибо, буду разбираться.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Ответ в темуСоздание новой темыСоздание опроса