myDC.ru

Здравствуйте, гость ( Вход | Регистрация )

 

> Mysql, win32 - API 2 | Самая распространённая база данных

Рейтинг 5 V
Setuper
сообщение 9.3.2009, 19:37
Сообщение #21


RusHub team lead
**************

Группа: Модераторы
Сообщений: 4 030
Регистрация: 20.6.2008
Из: г. Королёв (Моск. обл.)
Пользователь №: 46
Спасибо сказали: 1706 раз




DLL библиотека для работы с базой данных MySQL 5.

Версия lua: 5.1
Версия API: 2
Разрядность ОС: 32
Протестировано на PtokaX 0.4.1.1

Копирайт: Copyright © 2003-2007 Kepler Project
LuaSQL is a simple interface from Lua to a DBMS
Версия: LuaSQL 2.1.1


В связи с непонятной работой sqlite предлагаю перейти на стабильную и отчасти более функциональную базу данных.
Хоть преимуществом sqlite и является работа на локальном компьютере и легкая переносимость, однако весь мир использует mysql и надо отдать должное - mysql великолепен!


Теперь о содержимом библиотеки.
Я прикладываю rar архив. В нём dll файл libmysql.dll и папка luasql с dll файлом mysql.dll. Обе эти дллелки нужны для работы бд.
Распаковываем архив в папку, где лежит файл ptokax.exe (или в папку libs), и ничего никуда не перемещаем.
После этого запускаем скрипт для тестирования.




Основные функции для работы с mysql в lua

  • Подключение драйвера (библиотеки):
    Код
    require"luasql.mysql"

  • Инициализация драйвера (библиотеки):
    Код
    env = luasql.mysql()

  • Деинициализация драйвера (библиотеки):
    Код
    env:close()
    Возвращает true в случае успешного закрытия, false в случае, если закрытие уже было сделано до этого.




Объект - соединение (conn)

  • Метод вызова соединения с базой данных:
    Код
    conn = env:connect([имя_базы], [имя_пользователя], [пароль], [хост], [порт])
    Обязательным является только первый параметр, остальные параметры в случае отсутствия берутся по умолчанию: [имя_пользователя] = "root", [пароль] = "", [хост] = "localhost", [порт] = 3306

  • Метод закрытия соединения с базой данных:
    Код
    conn:close()
    Закрытие может быть успешным только в случае если все курсоры закрыты. Возвращает true в случае успеха, false - в случае неудачи.

  • Метод выполнения (завершения, совершения) текущей транзакции:
    Код
    conn:commit()
    Возвращает true в случае успеха, false - в случае, когда транзакция не может быть завершина или база данных не поддерживает транзакции (поддержка транзакции в mysql осуществляется с версии 4.0).

  • Метод выполнения SQL запроса к базе данных:
    Код
    conn:execute("запрос")
    В случае правильности запроса, для запросов типа SELECT возвращает курсор, для остальных запросов возвращает число столбцов или строк, успешно обработанных запросом. В случае неверного синтаксиса, или несуществующих таблиц, или несуществующих полей возвращается два значения: первое - nil, второе - сообщение с содержанием ошибки.

  • Метод отката на предыдущую транзакцию:
    Код
    conn:rollback()
    Возвращает true в случае успеха, false - в случае, когда операция не может быть выполнена или база данных не поддерживает транзакции (поддержка транзакции в mysql осуществляется с версии 4.0).

  • Метод включения/отключения автоматических транзакций:
    Код
    conn:setautocommit(boolean)
    Эта функция не может работать на базах, на которых не осуществляются транзакции. На базах данных, на которых нет понятия режима автоматических транзакций, этот механизм осуществляется драйвером. Метод возвращает true в случае успеха, и false - в случае невыполнимости или неосуществимости (поддержка транзакции в mysql осуществляется с версии 4.0).



Объект - курсор (cur)

  • Метод закрытия курсора:
    Код
    cur:close()
    Возвращает true в случае успешного закрытия, false - в случае, если этот курсор уже закрыт.

  • Метод извлечения результатов:
    Код
    cur:fetch([table[,modestring]])
    Извлекает следующий столбец с результатами. Если метод вызывается без параметров, то результаты возвращаются непосредственно вызывающему оператору. Если в первом параметре метода указана таблица, то результаты помещаются в эту таблицу, и методом возвращается эта таблица, при этом может быть использован второй параметр. Второй параметр - это строка, которая указывает на то, как создавать результирующую таблицу:
    "n" - результирующая таблица будет содержать целочисленные индексы (это значение по умолчанию);
    "a" - результирующая таблица будет содержать словесные индексы.
    Целочисленные индексы являются номерами полей в SELECT запросе. Словесные индексы являются названиями полей в SELECT запросе. Дополнительный табличный параметр является таблицей, которую нужно использовать для сохранения следующей строки запроса. В частности, это допускает использование одной уникальной таблицы для всех выборок, и такой механизм может улучшить общее выполнение выборки в целом. Нет гарантии того, что извлечённые результаты будут преобразовываться в нужные в lua типы (в зависимости от содержания), то есть это говорит о том, что возвращаемые результаты всегда представляются в виде строковых значений будь это строка или число. Метод возвращает результирующую таблицу или nil, в случае если достигнута конечная строка. Здесь нужно отметить, что этот метод может возвращать nil, но тем не менее запрос будет выполнен правильно.

  • Метод, возвращающий таблицу с именами столбцов для данного курсора:
    Код
    cur:getcolnames()

  • Метод, возвращающий таблицу с типами столбцов для данного курсора:
    Код
    cur:getcoltypes()

  • Метод, возвращающий число строк, полученных в результате запроса:
    Код
    cur:numrows()




Как работать с таблицами для достижения большей производительности

  1. По возможности все поля декларировать как NOT NULL. Это сделает работу с таблицами более быстрой и сохранит 1 бит на каждое такое поле.
  2. Применять значения по умолчанию (DEFAULT). При вызове запроса INSERT в таблицу будут записываться только те поля, значения которых отличаются от DEFAULT.
  3. Используйте настолько малые типы INT, насколько это возможно. Например, применять MEDIUMINT намного лучше, чем обычный INT.
  4. Если у вас нет записей с переменной длиной ( ни одного поля с типом VARCHAR, BLOB или TEXT), то таблица сохраняется в формате " постоянной длиной записи ". Это несколько расходует память, но намного повышает скорость работы.
  5. При использовании нескольких последовательных INSERT запросов, лучше все данные указать в одном INSERT, чем делать несколько INSERT.
  6. При загрузке данных в таблицу лучше использовать LOAD DATA INFILE, чем INSERT, такой метод в 20 раз быстрее.
  7. Для увеличения скорости LOAD DATA INFILE и INSERT нужно увеличить значение переменной key_buffer.
  8. Если ожидается много запросов INSERT или UPDATE, работающих одновременно, то для большей скорости рекомендуется приметь LOCK TABLES.
  9. Время от времени нужно дефрагметировать таблицы. Это делается утилитой isamchk с опциями - evi.



--------------------

Если у вас нет mysql сервера, то качаем его, например отсюда: http://www.mysql.ru/download/ (файл mysql-5.0.67-win32.zip)
Для удобного администрирования там же можно скачать утилиту mysqlgui-win32-static
MySQL распространяется под GNU General Public License и под собственной коммерческой лицензией, на выбор.


Архив с библиотеками под PtokaX 0.4.*.*: Прикрепленный файл  mysql.rar ( 541.42 килобайт ) Кол-во скачиваний: 1645

Скрипт примера работы с MySQL в LUA: Прикрепленный файл  mysql_test.lua ( 1.63 килобайт ) Кол-во скачиваний: 433
Go to the top of the page
+Quote Post
4 страниц V  < 1 2 3 4 >  
Начать новую тему
Ответов
Wariner
сообщение 16.3.2009, 22:37
Сообщение #22


Самый главный активист :-D
***********

Группа: Модераторы
Сообщений: 2 790
Регистрация: 29.6.2008
Из: г. Тула
Пользователь №: 97
Спасибо сказали: 439 раз




что то я совсем запутался с этими структурами БД и их нормальными формами((( Очень хочется увидеть рабочий скрипт хоть какой нибудь! А в особенности хотелось бы увидеть скрипт сведения ников и ипов юзеров!!! Илюх(Setuper), очень прошу напиши как сможешь!!!!
Go to the top of the page
+Quote Post
Setuper
сообщение 21.4.2009, 19:23
Сообщение #23


RusHub team lead
**************

Группа: Модераторы
Сообщений: 4 030
Регистрация: 20.6.2008
Из: г. Королёв (Моск. обл.)
Пользователь №: 46
Спасибо сказали: 1706 раз




Экранирование в MySQL.

Для начала - немного о кавычках.
Если мы подставляем в запрос какие-либо данные, то, чтобы отличить эти данные от команд SQL, их надо брать в кавычки.
К примеру, если написать
Код
SELECT * FROM mytable WHERE name = Nick
то база решит, что Nick - это имя другого поля, не найдёт его, и выдаст ошибку. Поэтому подставляемые данные (в данном случае имя Nick) надо заключать в кавычки - тогда база сочтет его строкой, значение которой надо присвоить полю name:
Код
SELECT * FROM mytable WHERE name = 'Nick'
Однако, и в самих данных могут тоже встречаться кавычки. К примеру,
Код
SELECT * FROM mytable WHERE name = 'Д'Артаньян'
Здесь база данных решит, что 'Д' - это данные, а Артаньян - команда, которую она не знает, и тоже выдаст ошибку. Поэтому и надо прослешивать все данные, чтобы объяснить базе, что встречающиеся в них кавычки (и некоторые другие спецсимволы) относятся к данным.
В результате мы получим правильный запрос, который ошибок не вызовет:
Код
SELECT * FROM mytable WHERE name = 'Д\'Артаньян'


Таким образом, мы выяснили, что при подстановке данных в запрос, следует придерживаться двух правил:
- все вставляемые в запрос данные должны быть заключены в кавычки (одинарные или двойные, но удобнее и чаще используются одинарные).
- во всех строковых переменных должны быть экранированы слешами спецсимволы.


Следует специально отметить: добавленные слеши НЕ идут в базу. Они нужны только в запросе. При попадании в базу слеши отбрасываются. Соответственно, распространенной ошибкой является попытка удалить слеши при получении данных из базы.

На самом деле, всё вышесказанное относится к данным строкового типа и датам. Числа можно вставлять не прослешивая и не окружaя кавычками. Если вы так делаете, то ОБЯЗАТЕЛЬНО! насильно приводите данные к нужному типу перед вставкой в запрос, например:
Код
id = tonumber(id)
Однако для простоты (и надёжности) можно и с числами работать, как со строками (проскольку mysql всё равно преобразует их к нужному типу). Соответственно, мы будем любые данные, вставляемые в запрос, прослешивать и заключать в кавычки.

Так же, есть ещё одно правило - необязательное, но его следует придерживаться во избежание появления ошибок:
Имена полей и таблиц следует заключать в обратные одинарные кавычки - `поле` (клавиша с этим символом находится на стандартной клавиатуре слева от клавиши "1") Ведь имя поля может совпадать с ключевыми словами mysql, но если мы используем обратную кавычку, то MySQL поймёт всё правильно:
Код
SELECT * FROM `WHERE` WHERE `DATE` = '2009-04-21'


Следует различать эти кавычки и не путать одни с другими. Следует также помнить, что обратные кавычки слешами не экранируются!


Наиболее эффективное экранирование.

Для наиболее эффективного экранирования кавычек следует использовать функцию:
Код
_G.string.dbformat = function(self, ...)
  local t = {...}
  for k, v in _G.ipairs(t) do
    t[k] = _G.tostring(v):gsub("'", "\\'")
  end
  return self:format(_G.unpack(t))
end

Рассмотрим пример использования данной функции на примере вставки в таблицу данных:
Код
con:execute(("INSERT INTO `mytable` (`nick`, `ip`, `client`, `share`) VALUES
('%s', '%s', '%s', '%s')"):dbformat("Д'Артаньян", "192.168.0.1", "StrgDC++", 27635467))
Что мы сделали? Мы просто, так сказать, переопределили всем известный метод format, написав в качестве его аналога, метод dbformat, который выполняет тоже самое, что и метод format, но дополнительно к этому, он экранирует одинарные кавычки.


Спасибо сказали:
Go to the top of the page
+Quote Post
Nickolya
сообщение 23.4.2009, 12:31
Сообщение #24


Главный ра******й тут...
*********

Группа: Главные администраторы
Сообщений: 1 724
Регистрация: 18.5.2008
Из: RF, 2la
Пользователь №: 1
Спасибо сказали: 772 раза




Увидев код сразу возникла мысль, что функция dbformat усложнена, вот выдержка из некоторого руководства, которое всем программерам советую прочитать и не раз:
Цитата
Переменное число параметров
В Lua, как и в С, в функцию можно передавать переменное число параметров. Синтаксис также похож:

function f(x, y, ...)
end

Все параметры, скрытые за ... Lua упаковывает в локальную таблицу arg. У таблицы arg есть поле n, содержащее число переданных аргументов. Для примера, напечатаем все переданные в функцию аргументы:

function f(...)
for i = 1, arg.n do
print(arg[i])
end
end

f(1, 2, 3, "Вася") -- выведет соответственно 1, 2, 3, "Вася"

Значит получается что лишнее вот это:
Код
  local t = {...}

т.к. мы имеем уже локальную таблицу arg, правда с лишним параметром n, который легко исключается big_smile.gif

И еще, объясните мне смысл приставки _G., всегда делал без нее и все работало. Это сделано для реализации модулей или чего еще?
Go to the top of the page
+Quote Post
Setuper
сообщение 23.4.2009, 13:07
Сообщение #25


RusHub team lead
**************

Группа: Модераторы
Сообщений: 4 030
Регистрация: 20.6.2008
Из: г. Королёв (Моск. обл.)
Пользователь №: 46
Спасибо сказали: 1706 раз




То, что написано по предложенной ссылке устарело и не работает в lua 5.1. (http://www.lua.ru/doc/7.1.html)
Переменная arg работает только в версиях ниже 5.1. В этом можно убедиться, выполнив соответствующий код. Поэтому ничего лишнего тут нету. Приставки _G можете не писать. Просто я взял реализацию этой функции из моего скрипта SBot, который написан с использованием модулей и ООП. big_smile.gif

Могу ещё добавить, что если оставить как написано (с _G), и ещё дописать перед функцией строку
Код
local _G = _G
то это будет являться оптимизацией выполнения данного метода, причем добавленная строка не несёт расхода ресурсов на копирование, так как глобальная переменная тут копируется по ссылке, а не по значению, при этом, как известно, доступ к локальным переменным производится быстрее, чем к глобальным, - отсуда и оптимизация big_smile.gif

Всё же советую за основу изучения lua брать сайт http://www.lua.ru/doc/ так как этот сайт постоянно обновляется и дополняется lua программистами, и следит за всеми изменениями в языке.

Кстати, ООП по предложенной ссылке не использует принципы инкапсуляции и наследования, поэтому оно в разы хуже предложенного мною ООП: http://mydc.ru/ipb.html?s=&showtopic=1...ost&p=10330 Хотя для ознакомления стоит прочитать. Некоторые намёки на инкапсуляцию там есть (правда не в описании ООП, а в начале статьи).
Go to the top of the page
+Quote Post
Nickolya
сообщение 23.4.2009, 13:45
Сообщение #26


Главный ра******й тут...
*********

Группа: Главные администраторы
Сообщений: 1 724
Регистрация: 18.5.2008
Из: RF, 2la
Пользователь №: 1
Спасибо сказали: 772 раза




Ну да, зачем спорить!?! big_smile.gif Спасибо за пояснения, бум оптимизировать все как только можно! А вот про ООП не знаю, с СИ я не знаком, да и области применения сильно не вижу, покажите мне скрипт или что-то еще где это очевидно полезно, пожалуйста.
Go to the top of the page
+Quote Post
Setuper
сообщение 23.4.2009, 14:00
Сообщение #27


RusHub team lead
**************

Группа: Модераторы
Сообщений: 4 030
Регистрация: 20.6.2008
Из: г. Королёв (Моск. обл.)
Пользователь №: 46
Спасибо сказали: 1706 раз




ООП полезен в любом скрипте, а особенно в больших. Язык Lua используется в играх, и там всё через ООП, так это самый эффективный путь.
Go to the top of the page
+Quote Post
Wariner
сообщение 24.4.2009, 20:11
Сообщение #28


Самый главный активист :-D
***********

Группа: Модераторы
Сообщений: 2 790
Регистрация: 29.6.2008
Из: г. Тула
Пользователь №: 97
Спасибо сказали: 439 раз




нужно ли создавать каждому скрипту отдельную БД или может назвать БД PtokaScripts и все скрипты будут её юзать?

Цитата(Setuper @ 23.4.2009, 15:00) *
ООП полезен в любом скрипте, а особенно в больших. Язык Lua используется в играх, и там всё через ООП, так это самый эффективный путь.

Очень жду дельного примера))))))
Go to the top of the page
+Quote Post
Nickolya
сообщение 25.4.2009, 9:01
Сообщение #29


Главный ра******й тут...
*********

Группа: Главные администраторы
Сообщений: 1 724
Регистрация: 18.5.2008
Из: RF, 2la
Пользователь №: 1
Спасибо сказали: 772 раза




Да, примеру будут рады все программеры big_smile.gif Думаю можно одну бд, главное - уникальность названия таблиц, и я бы предложил делать как в самых популярных движках префикс таблиц, схожий с названием скрипта и задающийся в конфиге, что убережет от совпадения имен таблиц. secret_smile.gif
Go to the top of the page
+Quote Post
Wariner
сообщение 25.4.2009, 9:48
Сообщение #30


Самый главный активист :-D
***********

Группа: Модераторы
Сообщений: 2 790
Регистрация: 29.6.2008
Из: г. Тула
Пользователь №: 97
Спасибо сказали: 439 раз




я буду называть БД PtokaScripts если есть другие предложения высказываемся(хотя по большому счёту наверно это не имеет никакого значения!)
Go to the top of the page
+Quote Post
Nickolya
сообщение 25.4.2009, 10:15
Сообщение #31


Главный ра******й тут...
*********

Группа: Главные администраторы
Сообщений: 1 724
Регистрация: 18.5.2008
Из: RF, 2la
Пользователь №: 1
Спасибо сказали: 772 раза




Илюх, я про префиксы, базу ты хоть как назови... big_smile.gif К примеру из конфига ипб:
Код
$INFO['sql_tbl_prefix']            =    'ibf_';
А вот из пхпмайадмина, тут таблицы галереи и вордпреса, это к примеру, как видишь чтобы они не перемешивались у них разные префиксы. Надеюсь доступно разстолковал что хочу чтобы было во всех скриптах! surrender.gif
Прикрепленные файлы
Прикрепленный файл  mysqltables.png ( 2.85 килобайт ) Кол-во скачиваний: 204
 
Go to the top of the page
+Quote Post
Wariner
сообщение 25.4.2009, 10:24
Сообщение #32


Самый главный активист :-D
***********

Группа: Модераторы
Сообщений: 2 790
Регистрация: 29.6.2008
Из: г. Тула
Пользователь №: 97
Спасибо сказали: 439 раз




Это я понял)))))))
Go to the top of the page
+Quote Post
Setuper
сообщение 25.4.2009, 10:28
Сообщение #33


RusHub team lead
**************

Группа: Модераторы
Сообщений: 4 030
Регистрация: 20.6.2008
Из: г. Королёв (Моск. обл.)
Пользователь №: 46
Спасибо сказали: 1706 раз




По-моему, про префиксы я уже где-то писал, но не важно. Важно то, что использование префиксов всегда оправданно, так же как и использование односторонних `кавычек`.

Что касается ООП, то я могу написать скрипт-пример, только подкиньте идейку скрипта big_smile.gif
Go to the top of the page
+Quote Post
Wariner
сообщение 25.4.2009, 10:32
Сообщение #34


Самый главный активист :-D
***********

Группа: Модераторы
Сообщений: 2 790
Регистрация: 29.6.2008
Из: г. Тула
Пользователь №: 97
Спасибо сказали: 439 раз




Илюх, я бы подкинул идейку, но не понимаю где и в чём будет оптимизация при применение ООП! Поэтому и хочу увидеть скрипт))) любой
Go to the top of the page
+Quote Post
AlXumuk
сообщение 29.4.2009, 23:05
Сообщение #35


Абсолютный новичок


Группа: Пользователи
Сообщений: 3
Регистрация: 12.4.2009
Пользователь №: 3 017
Спасибо сказали: 0 раз




А есть библиотеки на 64 битную винду?
32 битка не катит из-за поддержки только 3,5 гигов оперативки :(
Go to the top of the page
+Quote Post
Setuper
сообщение 30.4.2009, 0:00
Сообщение #36


RusHub team lead
**************

Группа: Модераторы
Сообщений: 4 030
Регистрация: 20.6.2008
Из: г. Королёв (Моск. обл.)
Пользователь №: 46
Спасибо сказали: 1706 раз




нет. только x32
Go to the top of the page
+Quote Post
mariner
сообщение 30.4.2009, 0:04
Сообщение #37


Местная ТехПоддержка
**********

Группа: Администраторы
Сообщений: 1 874
Регистрация: 18.7.2008
Из: Моск. Обл, г. королев, район Болшево
Пользователь №: 221
Спасибо сказали: 220 раз




если инетересует 64бита - есть для линукса. Правда линукс и в 32хбитном режиме тянет 4гига.
Go to the top of the page
+Quote Post
Setuper
сообщение 30.4.2009, 0:15
Сообщение #38


RusHub team lead
**************

Группа: Модераторы
Сообщений: 4 030
Регистрация: 20.6.2008
Из: г. Королёв (Моск. обл.)
Пользователь №: 46
Спасибо сказали: 1706 раз




В 32 разрядных системах 4 Гб - это максимальный размер виртуальной памяти (2 ^ 32 б = 4 Гб)
Go to the top of the page
+Quote Post
mariner
сообщение 30.4.2009, 0:26
Сообщение #39


Местная ТехПоддержка
**********

Группа: Администраторы
Сообщений: 1 874
Регистрация: 18.7.2008
Из: Моск. Обл, г. королев, район Болшево
Пользователь №: 221
Спасибо сказали: 220 раз




ядро собирается с опцией BigMEM и тянет дофига. (4 гига точно тянет, проверяли). даже загружаи спецтестом по максимуму.

правдя не для этой темы разговор.
Go to the top of the page
+Quote Post
AlXumuk
сообщение 30.4.2009, 1:44
Сообщение #40


Абсолютный новичок


Группа: Пользователи
Сообщений: 3
Регистрация: 12.4.2009
Пользователь №: 3 017
Спасибо сказали: 0 раз




а можно собрать эту библиотеку на 64 разрядную windows? ) а то я в этом не силён... :(
4 гига тоже мало )) нужно хотя бы 6 =)
Go to the top of the page
+Quote Post
mariner
сообщение 30.4.2009, 8:35
Сообщение #41


Местная ТехПоддержка
**********

Группа: Администраторы
Сообщений: 1 874
Регистрация: 18.7.2008
Из: Моск. Обл, г. королев, район Болшево
Пользователь №: 221
Спасибо сказали: 220 раз




ну мона и 64ре гига =) кто мещает ядро собрать как надо.
Go to the top of the page
+Quote Post

4 страниц V  < 1 2 3 4 >
Ответить в данную темуНачать новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

Collapse

> Похожие темы

  Тема Ответов Автор Просмотров Последнее сообщение
No New Posts lua mysql
4 shadow3c 3 509 20.8.2014, 20:33 Посл. сообщение: shadow3c
No New Posts Topic has attachmentsmysql
RusHub | Библиотека базы данных mysql
8 Setuper 12 282 18.8.2014, 4:05 Посл. сообщение: shadow3c
No New Posts Mysql
Unix | База данных
11 Jaska 11 610 21.9.2013, 18:17 Посл. сообщение: KCAHDEP
No new Эффективность mysql
текстовый файл или mysql?
23 Iskandark 8 599 29.12.2011, 9:47 Посл. сообщение: mariner
No New Posts Скрипт антимат и антиреклама с базой в Mysql
1 Vizunchik 3 591 7.12.2011, 20:17 Посл. сообщение: Ksan
No New Posts RusHub and MySQL?! есть ли и как ...
вопросы про mysql, md5 hash и т.д.
4 DRUG_ADDICT 5 320 3.4.2011, 7:03 Посл. сообщение: alex82
No New Posts Topic has attachmentsCustomLocations + MySQL
Определяем провайдера по IP-адресу
0 alex82 3 465 7.3.2011, 18:39 Посл. сообщение: alex82
No New Posts Релизы/Заказы с MySQL
API 2 | MySQL
0 Kingston 2 570 6.2.2011, 10:08 Посл. сообщение: Kingston
No New Posts Topic has attachmentsУстановка и настройка Ubuntu 10.04 под PtokaX 4.1.2 с MySQL. Финал.
Инструкция для новичков в Линуксе
11 TiGRpp 19 330 2.9.2010, 5:09 Посл. сообщение: TiGRpp
No new Topic has attachmentsПоиск по TTH на MySQL
18 Lesh™ 11 376 15.8.2010, 12:40 Посл. сообщение: Lesh™
No New Posts От: Поиск по TTH на MySQL
От темы с ID: 3549
1 Lesh™ 3 409 14.7.2010, 0:30 Посл. сообщение: Lesh™
Closed Скрипт для внесени в данных в MySQL прям из чата командой.
Нужно маленький скриптик который будет экспортировать определенный тек
1 DEN 007 3 008 4.7.2010, 9:45 Посл. сообщение: Setuper
No New Posts От: Заявки на перевод скриптов под MySQL
От темы с ID: 1824
0 alev 2 593 25.4.2010, 12:05 Посл. сообщение: alev
No New Posts От: mysql
От темы с ID: 2952
3 derSpinner 2 277 13.4.2010, 11:41 Посл. сообщение: Setuper
No New Posts ВАЖНО: Topic has attachmentsЗаявки на перевод скриптов под MySQL
5 Wariner 7 125 4.4.2010, 15:18 Посл. сообщение: Accelerator

 



RSS Сейчас: 25.4.2018, 22:57