• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!

Solved DB 'result' problem.

ianelli

Ramza
Joined
Mar 18, 2010
Messages
125
Reaction score
47
Location
Brazil
EDIT: FIXED!

If you have this issue, check your other libs at data/libs.
One of them may contain a global variable with the name 'result', and that creates a conflict.
Hope that help somebody.
See ya! :D

-------------------------------
Hello, i'm having a strange error with database on lua scripts...

here's the code, and the error:

local players = db.getResult("SELECT * FROM players;")
local player = getCreatureByName(tostring(players:getDataString("name")))

it returns an error message:

04:12 Lua error:
data/lib/004-database.lua:79: attempt to index global 'result' (a nil value)

Here is my database.lua at line 79 :

Code:
return result.getDataString(self:getID(), s)

And here is the full lib

Code:
if(result == nil) then
	print("> WARNING: Couldn't load database lib.")
	return
end

Result = createClass(nil)
Result:setAttributes({
	id = -1,
	query = ""
})

function Result:getID()
	return self.id
end

function Result:setID(_id)
	self.id = _id
end

function Result:getQuery()
	return self.query
end

function Result:setQuery(_query)
	self.query = _query
end

function Result:create(_query)
	self:setQuery(_query)
	local _id = db.storeQuery(self:getQuery())
	if(_id) then
		self:setID(_id)
	end

	return self:getID()
end

function Result:getRows(free)
	local free = free or false
	if(self:getID() == -1) then
		error("[Result:getRows] Result not set!")
	end

	local c = 0
	repeat
		c = c + 1
	until not self:next()

	local _query = self:getQuery()
	self:free()
	if(not free) then
		self:create(_query)
	end

	return c
end

function Result:getDataInt(s)
	if(self:getID() == -1) then
		error("[Result:getDataInt] Result not set!")
	end

	return result.getDataInt(self:getID(), s)
end

function Result:getDataLong(s)
	if(self:getID() == -1) then
		error("[Result:getDataLong] Result not set!")
	end

	return result.getDataLong(self:getID(), s)
end

function Result:getDataString(s)
	if(self:getID() == -1) then
		error("[Result:getDataString] Result not set!")
	end

	return result.getDataString(self:getID(), s)
end

function Result:getDataStream(s)
	if(self:getID() == -1) then
		error("[Result:getDataStream] Result not set!")
	end

	return result.getDataStream(self:getID(), s)
end

function Result:next()
	if(self:getID() == -1) then
		error("[Result:next] Result not set!")
	end

	return result.next(self:getID())
end

function Result:free()
	if(self:getID() == -1) then
		error("[Result:free] Result not set!")
	end

	self:setQuery("")
	local ret = result.free(self:getID())
	self:setID(-1)
	return ret
end

Result.numRows = Result.getRows
function db.getResult(query)
	if(type(query) ~= 'string') then
		return nil
	end

	local ret = Result:new()
	ret:create(query)
	return ret
end

Anybody know what that could be?

Obs.: If i do a print(players) it tells me that it's a table, and when i print the index and values, here what it looks like:

(index) -- (value)

id -- 0
query -- SELECT * FROM players;
 
Last edited:
Back
Top