xiti Posted January 14, 2012 Posted January 14, 2012 I have problem with my SQL save. I modificed the old MySQL to new SQL save with new mta 1.2 db functions and i now have problem but script dont save values to db file. I work maybe 3 days and i cant solve this problem. Please help me. Here is my code: sqlDefaultTable = "userdata" -- Connect to the database function mySQLConnect() local server = dbConnect( "sqlite", "file.db" ) end addEventHandler("onResourceStart",getResourceRootElement(getThisResource()),mySQLConnect) -- Make a new entry to the mySQL database function checkSqlData(source) local player = source local serial = getPlayerSerial(player) local server = dbConnect( "sqlite", "file.db" ) local entryCheck = dbQuery(server,"SELECT serial FROM "..sqlDefaultTable.." WHERE serial='"..serial.."'") if (entryCheck) then local result = dbPoll(entryCheck,1,1) if (result == "") or (result == nil) then outputDebugString("New entry added to the mySQL database!") dbQuery(server,"INSERT INTO "..sqlDefaultTable.." (serial) VALUES ('"..serial.."')") dbExec(server,"UPDATE "..sqlDefaultTable.." SET playerName='"..string.gsub(getPlayerName(player),"#%x%x%x%x%x%x", "").."' WHERE serial='"..serial.."'") end else outputDebugString("New entry added to the mySQL database!") dbQuery(server,"INSERT INTO "..sqlDefaultTable.." (serial) VALUES ('"..serial.."')") dbExec(server,"UPDATE "..sqlDefaultTable.." SET playerName='"..string.gsub(getPlayerName(player),"#%x%x%x%x%x%x", "").."' WHERE serial='"..serial.."'") end end addEventHandler("onPlayerJoin",getRootElement(),checkSqlData) addEventHandler("onResourceStart",getResourceRootElement(getThisResource()), function() for i,player in ipairs (getElementsByType("player")) do checkSqlData(player) end end) -- Load data from the database function loadPlayerData (player,datatype) if (player) and (datatype) then local serial = getPlayerSerial(player) local server = dbConnect( "sqlite", "file.db" ) local findQuery = dbQuery(server,"SELECT "..datatype.." FROM "..sqlDefaultTable.." WHERE serial='"..serial.."'") if (findQuery) then local result = dbPoll(findQuery,1,1) if not (result == nil) then if not (result == "") then dbFree(findQuery) return result else dbFree(findQuery) return 0 end else return 0 end else --outputDebugString("Failed to get "..datatype.." for player "..getPlayerName(player).." @ findQuery") --outputDebugString("mysql_query failed: (" .. mysql_errno(sqlConnection) .. ") " .. mysql_error(sqlConnection)) end end end -- Save data to the database function savePlayerData (player,datatype,newvalue) if (player) and (datatype) and (newvalue) then local serial = getPlayerSerial(player) local server = dbConnect( "sqlite", "file.db" ) local saveData = dbExec(server,"UPDATE "..sqlDefaultTable.." SET "..datatype.."='"..newvalue.."' WHERE serial='"..serial.."'") if (saveData == nil) then outputDebugString("Error executing the save query: (" .. mysql_errno(sqlConnection) .. ") " .. mysql_error(sqlConnection)) end end end Thanks for help.
myonlake Posted January 14, 2012 Posted January 14, 2012 local sqlHostname = "127.0.0.1" -- Hostname local sqlUsername = "pao13_dtr" -- Username local sqlPassword = "dtr4ever" -- Password local sqlDefaultDatabase = "pao13_dtr" -- Database local sqlDefaultTable = "userdata" -- Table -- Connect to the database function mySQLConnect() local server = dbConnect("sqlite", "file.db") end addEventHandler("onResourceStart", getResourceRootElement(getThisResource()), mySQLConnect) -- Make a new entry to the MySQL database function checkSQLData(player) local player = source local serial = getPlayerSerial(player) local entryCheck = dbQuery(mySQLConnect, "SELECT serial FROM " .. sqlDefaultTable .. " WHERE serial='" ..serial.. "'") if (entryCheck) then local result = dbPoll(entryCheck, 1, 1) if (result == "") or (result == nil) then outputDebugString("New entry added to the mySQL database!") dbQuery(mySQLConnect, "INSERT INTO " .. sqlDefaultTable.." (serial) VALUES ('"..serial.."')") dbExec(mySQLConnect, "UPDATE " .. sqlDefaultTable .. " SET playerName='".. string.gsub(getPlayerName(player), "#%x%x%x%x%x%x", "") .. "' WHERE serial='" .. serial .. "'") end else outputDebugString("New entry added to the mySQL database!") dbQuery(mySQLConnect,"INSERT INTO "..sqlDefaultTable.." (serial) VALUES ('"..serial.."')") dbExec(mySQLConnect,"UPDATE " .. sqlDefaultTable .. " SET playerName='" .. string.gsub(getPlayerName(player),"#%x%x%x%x%x%x", "") .. "' WHERE serial='" .. serial .. "'") end end addEventHandler("onPlayerJoin", getRootElement(), checkSQLData) addEventHandler("onResourceStart",getResourceRootElement(getThisResource()), function() for index, player in ipairs(getElementsByType("player")) do checkSQLData(player) end end ) -- Load data from the database function loadPlayerData(player, datatype) if (player) and (datatype) then local serial = getPlayerSerial(player) local findQuery = dbQuery(mySQLConnect, "SELECT " .. datatype .. " FROM " .. sqlDefaultTable .. " WHERE serial='" .. serial .. "'") if (findQuery) then local result = dbPoll(findQuery, 1, 1) if not (result == nil) then if not (result == "") then dbFree(findQuery) return result else dbFree(findQuery) return 0 end else return 0 end else --outputDebugString("Failed to get "..datatype.." for player "..getPlayerName(player).." @ findQuery") --outputDebugString("mysql_query failed: (" .. mysql_errno(sqlConnection) .. ") " .. mysql_error(sqlConnection)) end end end -- Save data to the database function savePlayerData (player, datatype, newvalue) if (player) and (datatype) and (newvalue) then local serial = getPlayerSerial(player) local saveData = dbExec(mySQLConnect, "UPDATE " .. sqlDefaultTable .. " SET " .. datatype .. "='" .. newvalue .. "' WHERE serial='" .. serial .. "'") if (saveData == nil) then outputDebugString("Error executing the save query: (" .. mysql_errno(sqlConnection) .. ") " .. mysql_error(sqlConnection)) end end end
xiti Posted January 14, 2012 Author Posted January 14, 2012 Thanks myonlake, this work and i now have other problem... When my script loadPlayerData that i have a error: [2012-01-14 15:15:25] WARNING: userpanel\main_server.Lua:3250: Bad argument @ 'dbQuery' [Expected db-connection at argument 2, got string 'SELECT cash FROM userdata WHERE serial='****************************************************''] [2012-01-14 15:15:25] ERROR: userpanel\main_server.Lua:1078: bad argument #1 to 'tonumber' (value expected) In line 1078 i have this function: function playingTimeAdd(thePlayer) local totalPlayingTimeMinutes = tonumber(loadPlayerData(thePlayer,"totalPlayingTimeMinutes")) local totalPlayingTimeHours = tonumber(loadPlayerData(thePlayer,"totalPlayingTimeHours")) if totalPlayingTimeMinutes == 59 then savePlayerData(thePlayer,"totalPlayingTimeMinutes",0) savePlayerData(thePlayer,"totalPlayingTimeHours",totalPlayingTimeHours+1) else savePlayerData(thePlayer,"totalPlayingTimeMinutes",totalPlayingTimeMinutes+1) end local totalPlayingTimeMinutes = tonumber(loadPlayerData(thePlayer,"totalPlayingTimeMinutes")) local totalPlayingTimeHours = tonumber(loadPlayerData(thePlayer,"totalPlayingTimeHours")) callClientFunction(thePlayer,"refreshTimePlaying",totalPlayingTimeMinutes,totalPlayingTimeHours) achievement21(thePlayer) achievement22(thePlayer) end I think that is tonumber... Please help...
Castillo Posted January 14, 2012 Posted January 14, 2012 That's wrong, his script was designed with Ryden's MySQL module, so is not sqlite. local sqlHostname = "127.0.0.1" -- Hostname local sqlUsername = "pao13_dtr" -- Username local sqlPassword = "dtr4ever" -- Password local sqlDefaultDatabase = "pao13_dtr" -- Database local sqlDefaultTable = "userdata" -- Table -- Connect to the database function connect() mySQLConnect = dbConnect( "mysql", "dbname="..tostring(sqlDefaultDatabase)..";host="..tostring(sqlHostname).."", tostring(sqlUsername), tostring(sqlPassword), "share=0" ) for index, player in ipairs(getElementsByType("player")) do checkSQLData(player) end end addEventHandler("onResourceStart", resourceRoot, connect) -- Make a new entry to the MySQL database function checkSQLData(player) local player = source local serial = getPlayerSerial(player) local entryCheck = dbQuery(mySQLConnect, "SELECT serial FROM " .. sqlDefaultTable .. " WHERE serial='" ..serial.. "'") if (entryCheck) then local result = dbPoll(entryCheck, 1, 1) if (result == "") or (result == nil) then outputDebugString("New entry added to the mySQL database!") dbQuery(mySQLConnect, "INSERT INTO " .. sqlDefaultTable.." (serial) VALUES ('"..serial.."')") dbExec(mySQLConnect, "UPDATE " .. sqlDefaultTable .. " SET playerName='".. string.gsub(getPlayerName(player), "#%x%x%x%x%x%x", "") .. "' WHERE serial='" .. serial .. "'") end else outputDebugString("New entry added to the mySQL database!") dbQuery(mySQLConnect,"INSERT INTO "..sqlDefaultTable.." (serial) VALUES ('"..serial.."')") dbExec(mySQLConnect,"UPDATE " .. sqlDefaultTable .. " SET playerName='" .. string.gsub(getPlayerName(player),"#%x%x%x%x%x%x", "") .. "' WHERE serial='" .. serial .. "'") end end addEventHandler("onPlayerJoin", getRootElement(), checkSQLData) -- Load data from the database function loadPlayerData(player, datatype) if (player) and (datatype) then local serial = getPlayerSerial(player) local findQuery = dbQuery(mySQLConnect, "SELECT " .. datatype .. " FROM " .. sqlDefaultTable .. " WHERE serial='" .. serial .. "'") if (findQuery) then local result = dbPoll(findQuery, 1, 1) if not (result == nil) then if not (result == "") then dbFree(findQuery) return result else dbFree(findQuery) return 0 end else return 0 end else --outputDebugString("Failed to get "..datatype.." for player "..getPlayerName(player).." @ findQuery") --outputDebugString("mysql_query failed: (" .. mysql_errno(sqlConnection) .. ") " .. mysql_error(sqlConnection)) end end end -- Save data to the database function savePlayerData (player, datatype, newvalue) if (player) and (datatype) and (newvalue) then local serial = getPlayerSerial(player) local saveData = dbExec(mySQLConnect, "UPDATE " .. sqlDefaultTable .. " SET " .. datatype .. "='" .. newvalue .. "' WHERE serial='" .. serial .. "'") if (saveData == nil) then --outputDebugString("Error executing the save query: (" .. mysql_errno(sqlConnection) .. ") " .. mysql_error(sqlConnection)) end end end
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