Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --Библиотека для работы с СУБД MySQL
- local event=require("event")
- --local ser=require("serialization").serialize
- local uns=require("serialization").unserialize
- local sig_request="mysql_request"
- local sig_ansver ="mysql_ansver"
- local pushSignal = require("computer").pushSignal
- local mysql={}
- local lastSession
- function Lrequest(self, ...) -- Локальная сессия
- lastSession=self
- self.error=nil
- pushSignal(sig_request, self.id, ...)
- local ev_name, id, result
- ev_name, id, result, self.error=event.pull(3, sig_ansver, self.id)
- if ev_name then
- if type(result)=="string" then return uns(result) end
- return result
- end
- self.error="Нет ответа от sql-сервера"
- return false
- end
- function Rrequest(self, ...) -- Удаленная сессия
- self.error="Удаленная сессия пока не поддерживается"
- return false
- end
- -----------------Функции СУБД MySQL--------------------------
- -- http://www.php.su/functions/?cat=mysql
- --mysql_affected_rows -- Возвращает число затронутых прошлой операцией рядов.
- --mysql_change_user -- Изменяет пользователя для указанного соединения.
- --mysql_client_encoding -- Возвращает кодировку соединения
- --mysql_close -- Закрывает соединение с сервером MySQL
- function mysql.close(session)
- session=session or lastSession
- if session("close") then
- setmetatable(session,nil)
- for k in pairs(session) do session[k]=nil end
- lastSession=nil
- return true
- else
- return false
- end
- end
- --mysql_connect -- Открывает соединение с сервером MySQL
- function mysql.connect( server , username , password )
- server=server or "localhost:3306"
- local session={username=username, password=password}
- session.host, session.port = server:match("(%w+):?(%d*)")
- session.port=tonumber(session.port) or 3306
- if session.host=="localhost" then
- setmetatable(session,{__call=Lrequest}) -- Локальная сессия
- else
- setmetatable(session,{__call=Rrequest}) -- Удаленная сессия
- end
- lastSession=session
- session.id=session("connect")
- if session.id then return session
- else session.error="Невозможно установить соединение с sql-сервером" return false end
- end
- --mysql_create_db -- Создаёт базу данных MySQL-- функция не поддерживается. Используйте mysql_query() с SQL-запросом создания базы данных "CREATE DATABASE"
- --mysql_data_seek -- Перемещает внутренний указатель в результате запроса
- function mysql.data_seek(result, row_number)
- if row_number>#result then return false end
- result.row_ptr=row_number
- return true
- end
- --mysql_db_name -- Возвращает название базы данных
- --mysql_db_query -- Переключается к указанной базе данных и посылает запрос
- --mysql_drop_db -- Уничтожает базу данных MySQL
- --mysql_errno -- Возвращает численный код ошибки выполнения последней операции с MySQL
- --mysql_error -- Возвращает строку ошибки последней операции с MySQL.
- function mysql.error(session)
- session=session or lastSession
- return session.error or ""
- end
- --mysql_escape_string -- Экранирует SQL спец-символы для mysql_query.
- --mysql_fetch_array -- Обрабатывает ряд результата запроса, возвращая ассоциативный массив, численный массив или оба.
- mysql.ASSOC, mysql.NUM, mysql.BOTH = 1,2,3
- function mysql.fetch_array(result , result_type)
- result_type=result_type or mysql.BOTH
- if not result.row_ptr then result.row_ptr=1 end
- if result.row_ptr>#result then return false end
- local res={}
- if result_type==mysql.ASSOC or result_type==mysql.BOTH then
- if type(result.name)=="table" then
- for i=1,#result.name do res[result.name[i]]=result[result.row_ptr][i] end
- else
- res[result.name]=result[result.row_ptr]
- end
- end
- if result_type==mysql.NUM or result_type==mysql.BOTH then
- if type(result.name)=="table" then
- for i=1,#result.name do res[i]=result[result.row_ptr][i] end
- else
- res[1]=result[result.row_ptr]
- end
- end
- result.row_ptr=result.row_ptr+1
- return res
- end
- function mysql.fetch_arrays(result, result_type)
- mysql.data_seek(result, 1)
- return function() return mysql.fetch_array(result, result_type) or nil end
- end
- --mysql_fetch_assoc -- Обрабатывает ряд результата запроса и возвращает ассоциативный массив.
- function mysql.fetch_assoc(result)
- return mysql.fetch_array(result, mysql.ASSOC)
- end
- --mysql_fetch_field -- Возвращает информацию о колонке из результата запроса в виде объекта.
- --mysql_fetch_lengths -- Возвращает длину каждого поля в результате.
- --mysql_fetch_object -- Обрабатывает ряд результата запроса и возвращает объект
- --mysql_fetch_row -- Орабатывает ряд результата запроса и возвращает неассоциативный массив.
- function mysql.fetch_row(result)
- if not result.row_ptr then result.row_ptr=1 end
- if result.row_ptr>#result then return false end
- result.row_ptr=result.row_ptr+1
- return result[result.row_ptr-1]
- end
- function mysql.fetch_rows(result)
- mysql.data_seek(result, 1)
- return function() return mysql.fetch_row(result) or nil end
- end
- --mysql_field_flags -- Возвращает флаги указанного поля результата запроса.
- --mysql_field_len -- Возвращает длину указанного поля.
- --mysql_field_name -- Возвращает название указанной колонки результата запроса.
- --mysql_field_seek -- Устанавливает внутренний указатель поля на переданное смещение.
- --mysql_field_table -- Возвращает название таблицы, которой принадлежит указанное поле.
- --mysql_field_type -- Возвращает тип указанного поля результата запроса.
- --mysql_free_result -- Освобождает память от результата запроса
- --mysql_get_client_info -- Возвращает данные о MySQL-клиенте
- --mysql_get_host_info -- Возвращает информацию о соединении с MySQL
- --mysql_get_proto_info -- Возвращает информацию о протоколе MySQL
- --mysql_get_server_info -- Возвращает информацию о сервере MySQL
- --mysql_info -- Возвращает информацию о последнем запросе
- --mysql_insert_id -- Возвращает ID, сгенерированный при последнем INSERT-запросе.
- --mysql_list_dbs -- Возвращает список баз данных, доступных на сервере.
- --mysql_list_fields -- Возвращает список колонок таблицы
- --mysql_list_processes -- Возвращает список процессов MySQL
- --mysql_list_tables -- Возвращает список таблиц базы данных MySQL
- --mysql_num_fields -- Возвращает количество полей результата запроса
- function mysql.num_fields( result )
- return #result.head
- end
- --mysql_num_rows -- Возвращает количество рядов результата запроса
- function mysql.num_rows( result )
- return #result
- end
- --mysql_pconnect -- Устанавливает постоянное соединение с сервером MySQL.
- --mysql_ping -- Проверяет соединение с сервером и пересоединяется при необходимости
- --mysql_query -- Посылает запрос MySQL--Строка запроса НЕ должна заканчиваться точкой с запятой
- function mysql.query( query, session )
- session=session or lastSession or mysql.connect()
- if not session then return false end
- return session("query",query)
- end
- --mysql_real_escape_string -- Экранирует специальные символы в строке, используемой в SQL-запросе, принмимая во внимание кодировку соединения.
- --mysql_result -- Возвращает данные результата запроса
- --mysql_select_db -- Выбирает базу данных MySQL
- --mysql_set_charset -- Устанавливает кодировку MySQL по умолчанию
- --mysql_stat -- Возвращает текущий статус сервера
- --mysql_tablename -- Возвращает имя таблицы, содержащей указанное поле
- --mysql_thread_id -- Возвращает ID текущего потока
- --mysql_unbuffered_query -- Посылает MySQL SQL-запрос без авто-обработки результата и её буфферизации.
- return mysql
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement