Cent 4 Опубликовано: 17 ноября 2009 Рассказать Опубликовано: 17 ноября 2009 Уважаемые. После обновления с 8.0 до 8.3 появилась следующая ошибка в некоторых местах сайта. Точнее на некоторых страницах сторонних модулей. Одна и та же ошибка в разных, абсолютно не свазанных модулей, такие как репутация пользователей, или DLE Forum. Unknown column 'detected' in 'where clause' Error Number: 1054 SELECT * FROM dle_post WHERE approve='1' AND category IN(not detected) AND id NOT IN (1146198840,1146200908,1146200861,1146203183) AND date >= '2009-11-17 14:05:29' - INTERVAL 90 DAY AND date < '2009-11-17 14:05:29' AND (short_story regexp '(thumbs|src=)' OR xfields regexp '(thumbs|src=)') ORDER BY rating DESC, comm_num DESC, news_read DESC, date DESC LIMIT 0,11 Как быть? Что делать? Цитата Ссылка на сообщение Поделиться на других сайтах
Captain 624 Опубликовано: 17 ноября 2009 Рассказать Опубликовано: 17 ноября 2009 Что делать? Обратиться к разработчикам этих модов, за поддержкой 8.3. Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 082 Опубликовано: 17 ноября 2009 Рассказать Опубликовано: 17 ноября 2009 Такого запроса в оригинальном коде скрипта нет, видимо это у вас от сторонних модулей. Цитата Ссылка на сообщение Поделиться на других сайтах
Cent 4 Опубликовано: 17 ноября 2009 Рассказать Опубликовано: 17 ноября 2009 Автор Так а я о чем говорю, это не только в каком-то конкретном модуле, а во всех, которые не относятся к дле. Модули абсолютно разные и от разных разработчиков, а ошибка везде одна. Прошу помочь исключительно опираясь на эту ошибку, на что именно ругается? Меня смущает особенно: AND category IN(not detected) Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 082 Опубликовано: 17 ноября 2009 Рассказать Опубликовано: 17 ноября 2009 Cent, это не может относиться ко всем модулям, у вас какой то модуль генерирует неверный запрос, отсюда и ошибка на сайте. В оригинальном скрипте таких запросов нет, поэтому если вы восстановите оригианльные файлы скрипта, то проблема будет устранена. А какой у вас модуль генерирует неверный запрос я не знаю. Цитата Ссылка на сообщение Поделиться на других сайтах
Cent 4 Опубликовано: 17 ноября 2009 Рассказать Опубликовано: 17 ноября 2009 Автор А по ошибке можно понять хотя бы какой файл участвует в этой ошибке? Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 082 Опубликовано: 17 ноября 2009 Рассказать Опубликовано: 17 ноября 2009 Cent, нет нельзя, нужно в файлах искать запрос. Цитата Ссылка на сообщение Поделиться на других сайтах
Cent 4 Опубликовано: 17 ноября 2009 Рассказать Опубликовано: 17 ноября 2009 (изменено) Автор Нашел виновный модуль. Буду вести диалог с разработчиком. Изменено 17 ноября 2009 пользователем Cent Цитата Ссылка на сообщение Поделиться на других сайтах
Cent 4 Опубликовано: 18 ноября 2009 Рассказать Опубликовано: 18 ноября 2009 Автор Прошу прощения, я понимаю что раздел не предназначен для решения проблем со сторонними модулями, но чтобы не создавать другую тему, опубликую здесь все по тому же вопросу, что и в первом посте. Я нашел файл модуля, который вызывает эту ошибку, но связаться с автором я так и не смог. Помогите решить проблему и найти ошибку в этом файле модуля. Вот код: <?php if(!defined('DATALIFEENGINE')) { die("Hacking attempt!"); } require_once(ENGINE_DIR.'/data/config.top10.php'); $san_top10=unserialize($san_dbt); if ($san_top10[10]=="RAND()") clear_cache("top10news"); if (!$tpl->result['top10news']) { $shab = '#src=\"http:.{30,100}(\.jpg|\.jpeg|\.gif|\.png)#i'; $now = date ('Y-m-d H:i:s', $_TIME); $imgs=""; if (isset($san_top10[6])) $imgs=" AND (short_story regexp '(thumbs|src=)' OR xfields regexp '(thumbs|src=)')"; $datag=" AND date >= '$now' - INTERVAL ".$san_top10[3]." DAY AND date < '$now'"; if ($san_top10[3]==0) $datag=""; //Раскомментируй текст ниже (удали /* и */) если хочешь чтоб модуль вибирал новости только из категории, в которой находится юзер. if ($category_id) $san_top10[8]=$category_id; if (!isset($san_top10[0])) $sql = $db->query("SELECT * FROM " . PREFIX . "_post WHERE approve='1' AND category IN($san_top10[8]) AND id NOT IN ($san_top10[9]) $datag $imgs ORDER BY $san_top10[10] LIMIT 0,$san_top10[4]"); else $sql = $db->query("SELECT * FROM " . PREFIX . "_post WHERE approve='1' AND category IN($san_top10[8]) AND id NOT IN ($san_top10[9]) $imgs ORDER BY date DESC LIMIT 0,$san_top10[4]"); while ($row = $db->get_row($sql)) { $row['category'] = intval ($row['category']); $row['date'] = strtotime($row['date']); if ($config['allow_alt_url'] == "yes") { if ($row['flag'] AND $config['seo_type']) { if ($row['category'] AND $config['seo_type'] == 2) { $full_link = $config['http_home_url'].get_url($row['category'])."/".$row['id']."-".$row['alt_name'].".html"; } else { $full_link = $config['http_home_url'].$row['id']."-".$row['alt_name'].".html"; } } else { $full_link = $config['http_home_url'].date('Y/m/d/', $row['date']).$row['alt_name'].".html"; } } else { $full_link = $config['http_home_url']."index.php?newsid=".$row['id']; } preg_match($shab, $row['short_story'], $image); $image=substr($image[0],5); if ($image=='') { preg_match($shab, $row['xfields'], $image); $image=substr($image[0],5); } preg_match_all($shab, $row['full_story'], $imag); $src1=substr($imag[0][0],5); $src2=substr($imag[0][1],5); $src3=substr($imag[0][2],5); $src4=substr($imag[0][3],5); $src5=substr($imag[0][4],5); if ($image=='') $image="{THEME}/images/".$san_top10[7]; if ($row['rating']==0) $row['rating']=1; if ($row['vote_num']=='0') $row['vote_num']=1; $row['title']=preg_replace("/'/","`",$row['title']); $row['title']=preg_replace('/"/',""",$row['title']); $rate='Рейтинг: <b>'.round($row['rating']/($row['vote_num']),2).'</b>'; $read='Просмотрело: <b>'.$row['news_read'].'</b> чел.'; if (!$row['category']) { $my_cat = "---"; $my_cat_link = "---";} else { $my_cat = array (); $my_cat_link = array (); $cat_list = explode (',', $row['category']); if (count($cat_list) == 1) { $my_cat[] = $cat_info[$cat_list[0]]['name']; $my_cat_link = get_categories ($cat_list[0]); } else { foreach ($cat_list as $element) { if ($element) { $my_cat[] = $cat_info[$element]['name']; if ($config['ajax']) $go_page = "onclick=\"DlePage('do=cat&category={$cat_info[$element]['alt_name']}'); return false;\" "; else $go_page = ""; if ($config['allow_alt_url'] == "yes") $my_cat_link[] = "<a {$go_page}href=\"".$config['http_home_url'].get_url($element)."/\">{$cat_info[$element]['name']}</a>"; else $my_cat_link[] = "<a {$go_page}href=\"$PHP_SELF?do=cat&category={$cat_info[$element]['alt_name']}\">{$cat_info[$element]['name']}</a>"; } } $my_cat_link = implode (', ', $my_cat_link); } $my_cat = implode (', ', $my_cat); } $tpl->load_template('top10_blog.tpl'); $tpl->set('{category}', $my_cat); $tpl->set('{title_cut}', substr($row['title'],0,$san_top10[1])); $tpl->set('{title}', substr($row['title'],0,$san_top10[2])); $tpl->set('{href}', $full_link); $tpl->set('{image}', $image); $tpl->set('{scr1}', $src1); $tpl->set('{scr2}', $src2); $tpl->set('{scr3}', $src3); $tpl->set('{scr4}', $src4); $tpl->set('{scr5}', $src5); $tpl->set('{rate}', $rate); $tpl->set('{news_read}', $read); $tpl->set('{descr}', $row['descr']); $tpl->set('{newline}', $nline); $tpl->compile('top10news'); $tpl->clear(); } $db->free(); } ?> Цитата Ссылка на сообщение Поделиться на других сайтах
IgorA100 90 Опубликовано: 18 ноября 2009 Рассказать Опубликовано: 18 ноября 2009 Навскидку: Надо знать что лежит в массиве "$san_top10", для этого как минимум нужно видеть файл '/data/config.top10.php' ЗЫ: В строке скульного запроса вот это: "category IN(not detected)" является ошибкой. Судя по логике ХАКа не определилась категория из которой надо делать выборку. Цитата Ссылка на сообщение Поделиться на других сайтах
Cent 4 Опубликовано: 18 ноября 2009 Рассказать Опубликовано: 18 ноября 2009 (изменено) Автор Содержание файла config.top10.php достаточно странное, но тем не менее: <?php $san_dbt='a:9:{i:1;s:2:"15";i:2;s:2:"50";i:3;s:2:"90";i:4;s:2:"11";i:6;i:1;i:7;s:12:"noavatar.png";i:8;s:77:"3,4,15,5,8,53,58,59,60,61,62,63,70,64,65,66,72,67,68,69,10,11,7,6,35,40,55,14";i:9;s:43:"1146198840,1146200908,1146200861,1146203183";i:10;s:53:"rating DESC, comm_num DESC, news_read DESC, date DESC";}' ?> Коротко опишу суть модуля. Он выводит на страницах сайтов ТОП10 в виде уменьшенных картинок. В каждом разделе - свой топ. На главной - топ со всех разделов. А возникает эта ошибка совсем в других местах, например при попытке открыть форум (DLE-FORUM) или страницу истории изменения репутаций пользователя, в модуле репутаций. Изменено 18 ноября 2009 пользователем Cent Цитата Ссылка на сообщение Поделиться на других сайтах
IgorA100 90 Опубликовано: 18 ноября 2009 Рассказать Опубликовано: 18 ноября 2009 Вот что лежит в массиве "$san_top10" 1=>15 2=>50 3=>90 4=>11 6=>1 7=>noavatar.png 8=>3,4,15,5,8,53,58,59,60,61,62,63,70,64,65,66,72,67,68,69,10,11,7,6,35,40,55,14 9=>1146198840,1146200908,1146200861,1146203183 10=>rating DESC, comm_num DESC, news_read DESC, date DESC Т.е. $san_top10[8] = "3,4,15,5,8,53,58,59,60,61,62,63,70,64,65,66,72,67,68,69,10,11,7,6,35,40,55,14" Почему у в запрос попадает "not detected" - я х.з. Возможно config.top10.php перезаписывается каждый раз при обновлении страницы, тогда надо уже смотреть как формируется этот конфиг. За 2 минуты это не решается. Надо смотреть на конкретном примере с исходниками. Наводки куда копать - я дал. Цитата Ссылка на сообщение Поделиться на других сайтах
Al-x 7 Опубликовано: 18 ноября 2009 Рассказать Опубликовано: 18 ноября 2009 (изменено) if ($category_id) $san_top10[8]=$category_id; замените на if ($category_id && $category_id != 'not detected') $san_top10[8]=$category_id; Одна и та же ошибка в разных, абсолютно не свазанных модулей, такие как репутация пользователей, или DLE Forum. Ну вообще по всей логике ошибка должна появлятся при просмотре категорий. Может конечно и в этих модулях использована переменная не верно, но скорее всего первое. Изменено 18 ноября 2009 пользователем Al-x Цитата Ссылка на сообщение Поделиться на других сайтах
Cent 4 Опубликовано: 18 ноября 2009 Рассказать Опубликовано: 18 ноября 2009 Автор Как говорится, все гениальное, просто! Спасибо Al-x, Ваш совет помог и все заработало! Цитата Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.