xiti Posted January 14, 2012 Share 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. Link to comment
myonlake Posted January 14, 2012 Share 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 Link to comment
xiti Posted January 14, 2012 Author Share 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... Link to comment
Castillo Posted January 14, 2012 Share 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 Link to comment
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