Jump to content

MySQL Problem


Dimos7

Recommended Posts

--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 by Guest
Link to comment

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)

Link to comment

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...