форум vBSupport.ru > vBulletin > Вопрос — Ответ
  • »
VBsupport перешел с домена .ORG на родной .RU Ура! Пожалуйста, обновите свои закладки - VBsupport.ru
 
 
 
 
vasil
Простоузер
Default Как создать SQL запрос
0

В админке есть Выполнить SQL запрос, подскажите сам синтаксис создания SQL запроса.
Для примера, мне сечас надо поменять у всех юзеров язык интерфейса, и включить публичные сообщения(так получилось что по умолчанию был выключен)
А как написать такой запрос я не знаю, в поиске не нашел
Bot
Yandex Bot Yandex Bot is online now
 
Join Date: 05.05.2005
Реклама на форуме А что у нас тут интересного? =)
 
 
Ghost
Гуру
 
Ghost's Avatar
Default
1

Кури маны и изучай структуру базы данных vBulletin. Например, для смены языка потребуется следующее:
  • Определить ID для каждого языка
    Code:
    SELECT * FROM `language`
  • Записать ID языка в таблицу пользователей
    Code:
    UPDATE `user` SET `languageid` = XXX
  • Записать ID языка в таблицу сессий
    Code:
    UPDATE `session` SET `languageid` = XXX
Здесь 'XXX' -- число, ID языка из таблицы 'language'.

Ghost добавил 03.08.2009 в 18:24
З.Ы. И все равно это, кстати, не поможет до тех пор пока юзеры не перелогинятся, т.к. ID используемого ими языка хранится еще и в куках, а не только в базе данных.

Last edited by Ghost : 08-03-2009 at 06:24 PM. Reason: Добавлено сообщение
 
 
vasil
Простоузер
Default
0

Quote:
Originally Posted by Ghost View Post
UPDATE `user` SET `languageid` = XXX
попробовал сделать
Code:
UPDATE `vb_user` SET `languageid` = `2`
выдало
Quote:
Во время выполнения вашего запроса произошла ошибка. Информация была возвращена.
номер ошибки: 1054
описание ошибки: Unknown column '2' in 'field list'
Что то не так делаю
 
 
GiveMeABreak
Эксперт
 
GiveMeABreak's Avatar
Default
0

UPDATE `vb_user` SET `languageid` = '2'

не те символы поставил
 
 
vasil
Простоузер
Default
0

Quote:
Originally Posted by GiveMeABreak View Post
UPDATE `vb_user` SET `languageid` = '2' не те символы поставил
Таблица user - vb_user, languageid русского - 2
Какие символы тогда ставить?

vasil добавил 03.08.2009 в 19:52
Всем спасибо, разобрался, `` вокруг 2 были лишними

vasil добавил 03.08.2009 в 21:22
А как включить публичные сообщения, как я понял это задается в поле options, там много цифр,
Как это поле формируется?

Last edited by vasil : 08-03-2009 at 09:22 PM. Reason: Добавлено сообщение
 
 
Ghost
Гуру
 
Ghost's Avatar
Default
1

vasil, ты прав, это определяется в поле options. если я не ошибаюсь, то число, которое там хранится, складывается из степеней двойки, каждая из которых обозначает какую-то настройку. тебе нужно сделать следующее:
  1. включить ЛС у себя и выполнить запрос
    Code:
    SELECT options FROM vb_user WHERE userid = XXX
    и записать найденное число (здесь XXX -- ID твоего пользователя)
  2. выключить ЛС и снова выполнить тот же запрос -- число должно получиться другое
  3. вычесть из первого числа второе -- получаем код опции "включить ЛС". у меня оно получилось равным 2048, т.е. 2^20 (скорее всего у тебя получится такое же, хотя хз зависит ли это от версии движка). обозначим это число YYY.
  4. для того чтобы найти всех, у кого эта опция отключена, выполням запрос
    Code:
    SELECT * FROM vb_user WHERE NOT(options & YYY)
  5. для того чтобы добавить эту опцию тем, у кого ее нет, запрос будет таким
    Code:
    UPDATE vb_user SET options = options + YYY WHERE userid IN (SELECT userid FROM vb_user WHERE NOT(options & YYY))
    или даже проще вот так
    Code:
    UPDATE vb_user SET options = options | YYY
 


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off




All times are GMT +4. The time now is 11:44 PM.


Powered by vBulletin® Version 3.5.6
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Loading...