Категории

[FAQ] Часто задаваемые вопросы и ответы

Проблемы и решения

Ошибки и исправления

Общие вопросы

Расширения

Установка и обновление

Модули

Шаблоны

Локализация интерфейса

Коммерческие предложения

Учимся бизнесу

Бизнес книги

Поисковая оптимизация (SEO)

Магазины на ShopOS

Хостинг для ShopOS

Предложения и пожелания

Курилка

Интересная проблема

Формурую запрос к бД:


$manufacturer_query = os_db_query("select
                                                                    m.manufacturers_id, m.manufacturers_name, m.manufacturers_image, m.date_added, m.last_modified, mi.manufacturers_description, mi.manufacturers_url, mi.url_clicked, mi.date_last_click
                                                                    from ".TABLE_MANUFACTURERS." m, ".TABLE_MANUFACTURERS_INFO." mi
                                                                    where m.manufacturers_id = '".(int) $_SESSION['customer_id']."' and m.manufacturers_id = mi.manufacturers_id and mi.languages_id = '". $customers_id."'");

$manufacturer = os_db_fetch_array($manufacturer_query);

Потом выводу данную инфу так : $manufacturer['manufacturers_name'] однако вместо имени нужного производителя выводится имя другого (тоже существующего), а все остальные данные выводятся правильно.

Кеш чистил не помогает. В чем может быть дело?


у меня вот так работает

. "'
                          order by m.manufacturers_name asc");
$myrow = os_db_fetch_array($query);


Что ж тут интересного? Обыкновенный неправильный запрос.
Эта часть  -  m.manufacturers_id = '".(int) $_SESSION['customer_id']."'  устраивает поиск, когда ID производителя = ID текущего покупателя. 
Смысла в этом, конечно, никакого.
Отсюда и результат.


Это я просто не правильно копипаснул. Должно быть так:

  $manufacturer_query = os_db_query("select
                                                                    m.manufacturers_id, m.manufacturers_name, m.manufacturers_image, m.date_added, m.last_modified, mi.manufacturers_description, mi.manufacturers_url, mi.url_clicked, mi.date_last_click
                                                                    from ".TABLE_MANUFACTURERS." m, ".TABLE_MANUFACTURERS_INFO." mi
                                                                    where m.manufacturers_id = '".$customers_id."' and m.manufacturers_id = mi.manufacturers_id and mi.languages_id = '".  $_SESSION['languages_id'] . "'");

  $manufacturer = os_db_fetch_array($manufacturer_query);

Где $customers_id - это значение которое приходит в функцию, где находится запрос.
Если честно не вижу в запросе ошибки (кроме опечатки конечно), и инфу он в принципе выдает верную, к примеру картинка правильная, описание правильное, все даты правильные, а вот имя другого производителя из таблицы. как быд-то оно где-то закэшировано.

Такое ощущение, что значение берется даже не из запроса. Может где-то память не доосвобождалась? Есть ли способ в начале функции как-то избавитсья от любых "хвостов" ?


функция os_db_query ничего из кэша не выдает. что mysql сервер отдал - то и есть

можно в phpmyadmin перепроверить результат запросов


а могут ли как-то области видимости переменных наложиться? Выоплнил запрос в MySql - выборка правильная до безумия.

а когда вывожу $manufacturer['manufacturers_name'] выдает не то.

p/s кстати возможно это важно, но неправильное имя  - это имя последнего производителя, которого я создал. И при выборке по любому из ранее созданных производителей, все их поля, кроме имени правильные, а вот имя - этого последнего.


Опять столь же интересный  неверный запрос:
m.manufacturers_id = '".$customers_id."' and ... and mi.languages_id = '". $customers_id."'
Теперь ищется,  когда ID производителя = ID текущего языка магазина.
Смысла в этом тоже никакого.

Вы б выложили целиком файл PHP  и файл шаблона...


Это функция а не php.

function os_get_manufacturer_info($customers_id)
{
        $manufacturer_query = os_db_query("select
                                                                    m.manufacturers_id, m.manufacturers_name, m.manufacturers_image, m.date_added, m.last_modified, mi.manufacturers_description, mi.manufacturers_url, mi.url_clicked, mi.date_last_click
                                                                    from ".TABLE_MANUFACTURERS." m, ".TABLE_MANUFACTURERS_INFO." mi
                                                                    where m.manufacturers_id = '". $customers_id ."' and m.manufacturers_id = mi.manufacturers_id and mi.languages_id = '".  (int) $_SESSION['languages_id'] ."'");

      $manufacturer = os_db_fetch_array($manufacturer_query);

      return $manufacturer;
}


С третьего раза запрос похож на правильный.

Вероятно, ошибка в другом месте.

Если дадите FTP в личку,  попробую найти ошибку


К сожалению, вынужден ещё раз констатировать, что в сети сайта пока нет. Думал может кто-нибудь встречался с подобной проблеммой. Похоже тчо нет.

Все равно спасибо!


Источник



Copyright ShopOS