The problem is solved! Thanks IzNoGod!
Indeed all informations are uploaded/downloaded as string, I post the final version of the functions (that work):

PHP Code:
get_db_field(fieldnamevartype)
{
    if(
isDefined(self.isbot))
        return 
undefined;
    
    if(
fieldname == "user_guid")
        
mysql_query(level.mysql_connection"SELECT `"+fieldname+"` FROM `"+level.table+"` WHERE `user_name`= '"+self.name+"' LIMIT 1");
    else
        
mysql_query(level.mysql_connection"SELECT `"+fieldname+"` FROM `"+level.table+"` WHERE `user_guid`= '"+self.guid+"' LIMIT 1");
    
mysql_store_result(level.mysql_connection);
    if(
isdefined(r))
    {
        
row mysql_fetch_row(r);
        if(
isdefined(row) && isdefined(row[0]))
        {
            
mysql_free_result(r);
            if(
vartype == "int")
                
row[0] = (int)(row[0]);
            if(
vartype == "float")
                
row[0] = (float)(row[0]);
            return 
row[0];
        }
        
mysql_free_result(r);
    }
    
    if(
vartype == "int" || vartype == "float")
        return 
0;
    else
        return 
undefined;

}  

set_db_field(fieldnamevalue
{
    if(
isDefined(self.isBot))
        return;
    
    
mysql_query(level.mysql_connection"INSERT INTO `"+level.table+"`(`user_guid`, `"+fieldname+"`) VALUES ('"+self.guid+"', "+value+") ON DUPLICATE KEY UPDATE `"+fieldname+"`="+value+"");
    
    
wait 0.05;
}

set_db_field_string(fieldnamevalue
{
    if(
isDefined(self.isBot))
        return;
    
    
mysql_query(level.mysql_connection"INSERT INTO `"+level.table+"`(`user_guid`, `"+fieldname+"`) VALUES ('"+self.guid+"', '"+value+"') ON DUPLICATE KEY UPDATE `"+fieldname+"`='"+value+"'");
    
wait 0.05;

I want to learn to create something like CoDExtended or whatsoever, where should I start?