Категории
[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 в личку, попробую найти ошибку
К сожалению, вынужден ещё раз констатировать, что в сети сайта пока нет. Думал может кто-нибудь встречался с подобной проблеммой. Похоже тчо нет.
Все равно спасибо!
Источник
|