var t = db.query_result
Then I use this in a for with multiple other queries which change the value of t, but I want to set it at the value of my first query? How do I set t at db.query_result and make it not change afterwards when I make other queries?
func setTuto1():#
db.open_db()
db.query("select ID from currentTutorialMap where LandTextureType = 'Stone0';")
var t = db.query_result
print(t)
print(t.size())
print(t[1]["ID"])
for i in range(0, t.size()):
var x = rng.randi_range(0, 6)
if x==0:
db.query("update currentTutorialMap set LandTextureIndex = 10 where ID == %d;" % t[i]["ID"])
elif (x==1 or x==2):
db.query("update currentTutorialMap set LandTextureIndex = 9 where ID == %d;" % t[i]["ID"])
elif (x==3 or x==4):
db.query("update currentTutorialMap set LandTextureIndex = 11 where ID == %d;" % t[i]["ID"])
elif (x==5 or x==6):
db.query("update currentTutorialMap set LandTextureIndex = 12 where ID == %d;" % t[i]["ID"])
CodePudding user response:
The variable t is local to your method (func). If you want it to keep its value, make it a field (declare it outside any func, the guidelines suggest to do that at the top of the script).
And if you just want the first result, and not overwrite it, you can have a bool variable, set to false by default. When you write t, you set it to true. That allows you to check if you have already set t.
Something like this:
var _is_t_set := false
var _t
func setTuto1():
if _is_t_set:
# we have been here before
# do whatever you do in this case
pass
else:
# first time we are here
db.open_db()
db.query("blah blah blah")
_t = db.query_result
_is_t_set = true # so we do not enter here again
Alternatively you could use null. Although double check if db.query_result can be null.
Something like this:
var _t = null
func setTuto1():
if _t != null:
# we have been here before
# do whatever you do in this case
pass
else:
# first time we are here
db.open_db()
db.query("blah blah blah")
_t = db.query_result
And, by the way, use prepared statements.
