Keli klausimai [MYSQL]
Posted: 2011 Jun 13 21:18
Code: Select all
mySQLConnect(){ if ( gMySQL >= SQL_OK ) { if ( !get_pcvar_num(persistent) ) close_mysql(); else return; } static host[64], user[32], pass[32], db[32], error[128]; get_pcvar_string(sql_host, host, 63); get_pcvar_string(sql_user, user, 31); get_pcvar_string(sql_pass, pass, 31); get_pcvar_string(sql_db, db, 31); if ( host[0] == '^0' && user[0] == '^0' && db[0] == '^0' ) { get_cvar_string("amx_mysql_host", host, 63); get_cvar_string("amx_mysql_user", user, 31); get_cvar_string("amx_mysql_pass", pass, 31); get_cvar_string("amx_mysql_db", db, 31); } gMySQL = dbi_connect(host, user, pass, db, error, 127) if ( gMySQL <= SQL_FAILED ) { log_amx("MySQL connect error: '%s' (%s,%s,%s)", error, host, user, db); return; } else if ( CreateTables ) { // Only try to create the tables once static sql[512]; new Result:retval; copy(sql, 511, "CREATE TABLE IF NOT EXISTS `jb_bank` ( `ip` varchar(32) binary NOT NULL default '', `credits` int(10) NOT NULL default '0', PRIMARY KEY (`IP`) ) TYPE=MyISAM COMMENT='ZP Credits saving table'"); retval = dbi_query(gMySQL, sql); if ( retval <= RESULT_FAILED ) { dbi_error(gMySQL, error, 127); log_amx("Error Making Tables: '%s' - '%s'", error, sql); return; } CreateTables = false; }} close_mysql(){ if ( gMySQL <= SQL_FAILED || get_pcvar_num(persistent) ) return; dbi_close(gMySQL);} save_data(id) //kai atsijungia{ mySQLConnect(); new name[32] , IP[35] , GetDate[9]; get_user_name(id, name, 31) , get_user_ip(id, IP, 29, 1) , get_time("%m-%d", GetDate, 8); static error[128], sql[512]; new Result:retval, Result:retvalins; formatex(sql, 511, "SELECT * FROM `jb_bank` WHERE `IP` = '%s'", IP) retval = dbi_query(gMySQL, sql) if ( retval <= RESULT_FAILED ) { dbi_error(gMySQL, error, 127); log_amx("Error Querying MySQL DB for %s: '%s' - '%s'", IP, error, sql); return; } else if ( retval == RESULT_NONE || !dbi_nextrow(retval) ) { formatex(sql, 511, "INSERT INTO `jb_bank` (ip,credits,name,date) VALUES ('%s','%d','%s','%s')", IP, g_jbpacks[id], name, GetDate); retvalins = dbi_query(gMySQL, sql); if ( retvalins <= RESULT_FAILED ) { dbi_error(gMySQL, error, 127); log_amx("Error Writing MySQL Ammo Packs for %s: '%s' - '%s'", IP, error, sql); return; } } if ( retval >= RESULT_OK ) dbi_free_result(retval); //Update users entry with current data formatex(sql, 511, "UPDATE `jb_bank` SET `credits`='%d', `name`='%s', `date`='%s' WHERE name='%s'", g_jbpacks[id], name, GetDate, name); retval = dbi_query(gMySQL, sql); if (retval <= RESULT_FAILED) { dbi_error(gMySQL, error, 127); log_amx("Error Writing MySQL XP for %s: '%s' - '%s'", IP, error, sql); return; } //Closes the connection if set not to be persistent close_mysql()} retrieve_data(id) //kai prisijungia{ new name[35], IP[35]; get_user_name(id, name, 31) , get_user_ip(id, IP, 29, 1) mySQLConnect(); if ( gMySQL <= SQL_FAILED ) return; static sql[512], error[128]; new Result:retvalxp; formatex(sql, 511, "SELECT `credits` FROM `jb_bank` WHERE `name` = '%s'", name); retvalxp = dbi_query(gMySQL, sql); if ( retvalxp <= RESULT_FAILED ) { dbi_error(gMySQL, error, 127); log_amx("Error Loading MySQL Credits for %s: '%s' - '%s'", IP, error, sql); return; } else if ( retvalxp == RESULT_NONE || !dbi_nextrow(retvalxp) ) { dbi_error(gMySQL, error, 127); log_amx("No Saved Ammmo Packs Loaded for %s: '%s'", IP, error); if ( retvalxp >= RESULT_OK ) dbi_free_result(retvalxp); //Closes the connection if set not to be persistent close_mysql(); return; } static amp[13]; new storagenum dbi_field(retvalxp, 1, amp, 12); storagenum = str_to_num(amp); g_jbpacks[id] = storagenum if ( retvalxp >= RESULT_OK ) dbi_free_result(retvalxp); //Closes the connection if set not to be persistent close_mysql(); }
P.S. I lenteles "CREATE" ir "INSERT"/"UPDATE" sintaxe neziurekit, nes sukurta lentele kitokia, nei cia prasoma sukurti.
P.S.S. Primary key pakeistas