Не нравятся результаты поиска? Попробуйте другой поиск!
dle-faq.ru FAQ (все вопросы) MySQL Поместить запрос $db->super_query в запросы $db->query

Поместить запрос $db->super_query в запросы $db->query


     06.10.2014    MySQL    2190

вопрос
Пишу модуль магазина, прайс которого еженочно обновляется на ~150k позиций.
Причем нет уникальной записи для товара, поэтому каждый раз база просто очищается и парсится.

Из-за этого один и тот же товар в разные дни может иметь разные ID.

В итоге храню корзину в sql базе, конкретно ID товара на данный момент и хеш его описания, ну там количество и прочее...

Когда покупатель набрал корзинку, он переходит в нее... А может переходит в нее через сутки-двое...
В итоге мы должны на первом шаге получить данные о покупках, и затем каждую покупку проверить - может этого товара уже и нет.

Условно 2 таблицы
AAA - корзинка
id, ID товара, название товара, хеш(описания)

ВВВ - товары
id, название товара, описание, цена, доставка, прочее


Делаю так
$zakaz = $db->query(" *** запрашиваю данные по корзинке ***");
        while ( $zakaz = $db->get_array() )
            {
                $id = $zakaz['artikul_id'];

                $item = $db->super_query( " *** запрашиваю данные по товару, где id=ID товара ***" );

                Вычисляю $hash товара

                if ($hash == $zakaz['hash'])
                    { если хеши совпали, используем данные товара, его то и добавляли }
                else
                    { сообщаем, что товар удален из корзинки или что другое... }
            }


Все застопорилось на $db->super_query, этот запрос убивает данные, которые в первом $db->query

Алгоритм показан условно, объединять непосредственно 2 sql запроса в 1 запрос не получится

Ответил: xsash


Сам задал, сам отвечаю

Переименовываем запрос
$z = $db->query(" запрос ");

Указываем в массиве
while ( $zakaz = $db->get_array($z) )

Комментарии пользователей (5)

FastFud
50

1599 | 588

FastFud - 6 октября 2014 19:16 - Юзер

Если моя память не подводит то в while(в циклах) запросы не должны быть.

dj-avtosh
39

1479 | 390

dj-avtosh - 6 октября 2014 19:30 - шашлычник

не может оно убивать данные никакие. Если нужно собирайте в массив потом еще одним циклом ходите, или через IN.

skype: elhan.isaev

xsash
2

37 | 5

xsash - 7 октября 2014 11:30 - Юзер

А вы попробуйте

Есть второй запрос в цикле - показывается только первый результат из выборки первого запроса
Убираем второй запрос, из первого показываются все данные (больше одного)

Я тоже не ожидал такого подвоха, когда вместо таблицы появилась одна строка

dj-avtosh
39

1479 | 390

dj-avtosh - 7 октября 2014 14:08 - шашлычник

$zakaz = $db->query(" *** запрашиваю данные по корзинке ***");
        while ( $zakaz = $db->get_array() )


не смущает переприсваивание переменной $zakaz?

skype: elhan.isaev

xsash
2

37 | 5

xsash - 9 октября 2014 21:50 - Юзер

смущает, что-то старею

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы