client_disconnect() is useful, I just try to avoid calling functions on players there. If it's data that is stored in variables then it's fine to do the actual save procedure at disconnect.
In your case, I would store each players steam id in a global array of strings (retrieve at client_authorized), this will save you a native call @ disconnect as well. I just noticed that you are already retrieving authid into a global array at authorized and you even have a comment saying it will be used at disconnect for safe saving. I'm guessing you copied the code from somewhere?
PHP Code:
public client_authorized(Id)
{
get_user_authid(Id, g_Steam[Id], charsmax(g_Steam[])) // Lets get SteamID just once. Safe for client_disconnect saving
//...
public Save_PlayerLevel(id)
{
static szAuthId[33];
get_user_authid(id, szAuthId, 32);
I would get an application that can view your tables to make sure all of the data looks ok.
For your SQL, I would name the table something different than one of the fields. You are using a table named Level while having a field named Level. Maybe name your table 'tblLevels'?
__________________