Dimos7 Posted March 19, 2016 Posted March 19, 2016 (edited) --connection Settings local hostname = "127.0.0.1" local username = "root" local password = "" local database ="inrpg" local port = 3306 -- global things local MySQLConnection = nil local resultPool = { } local sqllog = false local countqueries = 0 -- connectToDatabse - Internal function, to spawn a DB connection function connectToDatabse(res) MySQLConnection = mysql_connect(hostname, username, password, database, port) if (not MySQLConnection) then if (res == getThisResource()) then cancelEvent(true, "Cannot connect to the database") end return nil end end addEventHandler("onResourceStart", resourceRoot, connectToDatabse) -- destroyDatabaseConnection - Internal function, to kill the connection if theres one function destroyDatabaseConnection() if (not MySQLConnection) then return nil end mysql_close(MySQLConnection) return nil end addEventHandler("onResourceStop", resourceRoot, destroyDatabaseConnection) -- do something useful here function logSQLError(str) local message = str or "N/A" outputDebugString("MYSQL ERROR"..mysql_errno(MySQLConnection)..": "..mysql_error(MySQLConnection)) exports.logs:logMessage("MYSQL ERROR ! [QUERY]"..message.." [ERROR] "..mysql_errno(MySQLConnection)..": "..mysql_error(MySQLConnection), 19) end function getFreeRsultPoolID() local size = #resultPool if (size == 0) then return 1 end for index, query in ipairs(resultPool) do if (query ==nil) then return index end end return (size + 1) end ---------- EXPORTED FUNCTIONS ---------- function ping() if (mysql_ping(MySQLConnection) == false) then destroyDatabaseConnection() connectToDatabse(nil) if (mysql_ping(MySQLConnection) == false) then logSQLError() return false end return true end end function escape_string(str) if (ping()) then return mysql_escape_string(MySQLConnection, str) end return false end function query(str) if sqllog then exports.logs:logMessage(str, 19) end countqueries = countqueries + 1 if (ping()) then local result = mysql_query(MySQLConnection, str) if (not result) then logSQLError(str) return false end local resultid = getFreeRsultPoolID() resultPool[resultid] = result return resultid end return false end function unbuffered_qyery(str) if sqllog then exports.logs:logMessage(str, 19) end countqueries = countqueries + 1 if (ping()) then local result = mysql_unbuffered_query(MySQLConnection, str) if (not result) then logSQLError(str) return false end local resultid = getFreeRsultPoolID() resultPool[resultid] = result return resultid end return false end function query_free(str) local queryresult = query(str) if not (queryresult == false) then free_result(queryresult) return true end return false end function rows_assoc(resultid) if (not resultPool[resultid]) then return false end return mysql_rows_assoc(resultPool[resultid]) end function fetch_assoc(resultid) if (not resultPool[resultid])then return false end return mysql_fetch_assoc(resultPool[resultid]) end function free_result(resultid) if (not resultPool[resultid]) then return false end return mysql_free_result(resultPool[resultid]) table.remove(resultPool, resultid) return nil end -- incase a nub wants to use it,FINE function result(resultid, row_offset, field_offset) if (not resultPool[resultid]) then return false end return mysql_result(resultPool[resultid]) end function num_rows(resultid) if (not resultPool[resultid]) then return false end return mysql_num_rows(resultPool[resultid]) end function insert_id() return mysql_insert_id(MySQLConnection) or false end function query_fetch_assoc(str) local queryresult = query(str) if not (queryresult == false) then local result = fetch_assoc(queryresult) free_result(queryresult) return result end return false end function query_rows_assoc(str) local queryresult = query(str) if not (queryresult == false) then local result = rows_assoc(queryresult) free_result(queryresult) return result end return false end function query_insert_free(str) local queryresult = query(str) if not (queryresult == false) then local result = insert_id() free_result(queryresult) return result end return false end function escape_string(str) return mysql_escape_string(MySQLConnection, str) end function debugMode() if (sqllog) then sqllog = false else sqllog = true end return sqllog end function returnQueryStats() return countqueries end ERROR: Loading script failed: mysql\connection.lua:146: 'end' expected (to close 'function' at line 141) near 'table' Edited March 20, 2016 by Guest
Bonus Posted March 19, 2016 Posted March 19, 2016 return mysql_free_result(resultPool[resultid]) table.remove(resultPool, resultid) return nil You know what "return" does right?
Dimos7 Posted March 20, 2016 Author Posted March 20, 2016 Yes i do --connection Settings local hostname = "127.0.0.1" local username = "root" local password = "" local database ="inrpg" local port = 3306 -- global things local MySQLConnection = nil local resultPool = { } local sqllog = false local countqueries = 0 -- connectToDatabse - Internal function, to spawn a DB connection function connectToDatabse(res) MySQLConnection = mysql_connect(hostname, username, password, database, port) if (not MySQLConnection) then if (res == getThisResource()) then cancelEvent(true, "Cannot connect to the database") end return nil end end addEventHandler("onResourceStart", resourceRoot, connectToDatabse) -- destroyDatabaseConnection - Internal function, to kill the connection if theres one function destroyDatabaseConnection() if (not MySQLConnection) then return nil end mysql_close(MySQLConnection) return nil end addEventHandler("onResourceStop", resourceRoot, destroyDatabaseConnection) -- do something useful here function logSQLError(str) local message = str or "N/A" outputDebugString("MYSQL ERROR"..mysql_errno(MySQLConnection)..": "..mysql_error(MySQLConnection)) exports.logs:logMessage("MYSQL ERROR ! [QUERY]"..message.." [ERROR] "..mysql_errno(MySQLConnection)..": "..mysql_error(MySQLConnection), 18) end function getFreeRsultPoolID() local size = #resultPool if (size == 0) then return 1 end for index, query in ipairs(resultPool) do if (query ==nil) then return index end end return (size + 1) end ---------- EXPORTED FUNCTIONS ---------- function ping() if (mysql_ping(MySQLConnection) == false) then destroyDatabaseConnection() connectToDatabse(nil) if (mysql_ping(MySQLConnection) == false) then logSQLError() return false end return true end end function escape_string(str) if (ping()) then return mysql_escape_string(MySQLConnection, str) end return false end function query(str) if sqllog then exports.logs:logMessage(str, 18) end countqueries = countqueries + 1 if (ping()) then local result = mysql_query(MySQLConnection, str) if (not result) then logSQLError(str) return false end local resultid = getFreeRsultPoolID() resultPool[resultid] = result return resultid end return false end function unbuffered_qyery(str) if sqllog then exports.logs:logMessage(str, 18) end countqueries = countqueries + 1 if (ping()) then local result = mysql_unbuffered_query(MySQLConnection, str) if (not result) then logSQLError(str) return false end local resultid = getFreeRsultPoolID() resultPool[resultid] = result return resultid end return false end function query_free(str) local queryresult = query(str) if not (queryresult == false) then free_result(queryresult) return true end return false end function rows_assoc(resultid) if (not resultPool[resultid]) then return false end return mysql_rows_assoc(resultPool[resultid]) end function fetch_assoc(resultid) if (not resultPool[resultid])then return false end return mysql_fetch_assoc(resultPool[resultid]) end function free_result(resultid) if (not resultPool[resultid]) then return false end mysql_free_result(resultPool[resultid]) table.remove(resultPool, resultid) return nil end -- incase a nub wants to use it,FINE function result(resultid, row_offset, field_offset) if (not resultPool[resultid]) then return false end return mysql_result(resultPool[resultid]) end function num_rows(resultid) if (not resultPool[resultid]) then return false end return mysql_num_rows(resultPool[resultid]) end function insert_id() return mysql_insert_id(MySQLConnection) or false end function query_fetch_assoc(str) local queryresult = query(str) if not (queryresult == false) then local result = fetch_assoc(queryresult) free_result(queryresult) return result end return false end function query_rows_assoc(str) local queryresult = query(str) if not (queryresult == false) then local result = rows_assoc(queryresult) free_result(queryresult) return result end return false end function query_insert_free(str) local queryresult = query(str) if not (queryresult == false) then local result = insert_id() free_result(queryresult) return result end return false end function escape_string(str) return mysql_escape_string(MySQLConnection, str) end function debugMode() if (sqllog) then sqllog = false else sqllog = true end return sqllog end function returnQueryStats() return countqueries end ERROR: mysql\connection.lua:16: attempt to call global 'mysql_connect' (a nil value)
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now