Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » MySQL » Поместить запрос $db->super_query в запросы $db->query

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


     06.10.2014    super_query, query, sql запрос    Все вопросы » MySQL    5331

вопрос
Пишу модуль магазина, прайс которого еженочно обновляется на ~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
Юзер

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

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

dj-avtosh
PHP-developer

dj-avtosh - 6 октября 2014 19:30 -

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

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

xsash
Юзер

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

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

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

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

dj-avtosh
PHP-developer

dj-avtosh - 7 октября 2014 14:08 -

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


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

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

xsash
Юзер

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

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

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

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

наверх