Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Ошибка база данных (http://forum.oszone.net/showthread.php?t=74012)

Piratic 04-11-2006 13:33 506863

Ошибка база данных
 
Ошибка база данных в vBulletin 3.6.0:

Invalid SQL:
select count(*) as newposts from post where dateline >= 03:04, 04.11.2006 and visible = 1;

Ошибка MySQL : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ':04, 04.11.2006 and visible = 1' at line 1
Номер ошибки : 1064
Дата : Saturday, November 4th 2006 @ 01:14:08 PM
Скрипт : http://unecha-un.jino-net.ru/forum/index.php

Имя класса : vB_Database

Помогите разобраться с проблемой!

dmitryst 04-11-2006 14:57 506907

select count(*) as newposts from post where dateline >= `03:04, 04.11.2006` and visible = 1;

А так?

Piratic 04-11-2006 15:13 506914

Цитата:

select count(*) as newposts from post where dateline >= `03:04, 04.11.2006` and visible = 1;

Дело в то что не очень сведом в знаниях баз данных, распишите пожалуйста поподробнее как устранить?

dmitryst 04-11-2006 15:18 506917

Piratic я ж написал, надо дату в обратные апострофы заключить (там, где "Ё" и "~"). Не поможет - будем дальше думать

Piratic 04-11-2006 15:28 506930

Выполнил SQL запрос на БД 1.

Цитата:

ERROR: Неправильный идентификатор @ 64 STR: 04.11. SQL: select count(*) as newposts from post where dateline >= 03:04, 04.11.2006 and visible = 1
Цитата:

Ответ MySQL: #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ':04, 04.11.2006 and visible = 1' at line 1
Изменил запрос на БД 2.



Цитата:

Ответ MySQL: #1054 - Unknown column '03:04, 04.11.2006' in 'where clause'

dmitryst 04-11-2006 15:37 506935

PiraticАга, тогда меняем обратные апострофы на прямые ' (кнопка "кавычка")

Piratic 04-11-2006 15:44 506942


select count(*) as newposts from post where dateline >= "03:04, 04.11.2006" and visible = 1;
Ответ:
Цитата:

newposts 23
Вроде всё гладко.

Какие дальше действия предпринимать?

Ошибка произошла на форуме, после установки продукта

dmitryst 04-11-2006 15:48 506945

Piratic Вообще-то, я не кавычки советовал, а то, что на той клавише ;). Ну да ладно, прошло - и хорошо. Надо искать следующее место с такими же не к месту поставленными запятыми и точками.

Piratic 04-11-2006 15:53 506948

Форум вроде встал.:o


Огромное спасибоооооооооо :)

сейчас попробую переставить мод!

Piratic 04-11-2006 16:13 506953

Ситуация повторилась!

Вот нашёл код продукта, что тут не так?

Цитата:

$vbulletin->userinfo['newposts'] = $db->query_first("select count(*) as newposts from ".TABLE_PREFIX."post where dateline >= {$vbulletin->userinfo['lastvisit']} and visible = 1"); $vbulletin->userinfo['newposts'] = vb_number_format($vbulletin->userinfo['newposts']['newposts']); $vbulletin->userinfo['newthreads'] = $db->query_first("select count(*) as newthreads from ".TABLE_PREFIX."thread where dateline >= {$vbulletin->userinfo['lastvisit']} and visible = 1 and sticky in(0,1)"); $vbulletin->userinfo['newthreads'] = vb_number_format($vbulletin->userinfo['newthreads']['newthreads']); $vbulletin->userinfo['lastvisit'] = vbdate($vbulletin->options['timeformat'], $vbulletin->userinfo['lastvisit']) . ', ' . vbdate($vbulletin->options['dateformat'], $vbulletin->userinfo['lastvisit']); $exec_lastposts = $db->query_first("select count(*) as lastposts from ".TABLE_PREFIX."post where visible = 1 and dateline >= ".(TIMENOW - 86400)); $exec_lastposts = vb_number_format($exec_lastposts['lastposts']); $vbulletin->templatecache['FORUMHOME'] = str_replace('$navbar','$navbar ' . $vbulletin->templatecache[forumhome_welcomepanel],$vbulletin->templatecache['FORUMHOME']); }]]></phpcode> </plugin> </plugins>

dmitryst 04-11-2006 16:14 506954

Piratic
Цитата:

Огромное спасибоооооооооо
Не за что. Лучше нажмите "полезное сообщение" :). Шутка. Можно не нажимать.
Странно, что разработчики баг не пофиксили.

Piratic 04-11-2006 18:52 506981

На форум производителей я уже отписал о найденном баге. Пока молчат, тему можно закрывать!

pva 04-11-2006 20:36 507013

я в php мало понимаю, но чисто логически:
".TABLE_PREFIX."post where dateline >= '{$vbulletin->userinfo['lastvisit']}' and visible = 1");
и так далее, во всех местах

dmitryst 04-11-2006 23:51 507054

pva Да, что-то типа этого (я на perl-е пишу, там этого можно избежать сравнительно просто)


Время: 13:57.

Время: 13:57.
© OSzone.net 2001-