jak łącze się z baza to to wyskakuje mi error
[xpSQL.amxx] Blad w zapytaniu: L, PRIMARY KEY (`nick`) ) [SaveData]
ktos mnie naprowadzi na naprawe tego bledu
/* Plugin generated by AMXX-Studio */ #include <amxmodx> #include <amxmisc> #include <sqlx> #define PLUGIN "zapis XP na SQL" #define VERSION "1.0" #define AUTHOR "rydy17" new Handle: g_SqlTuple; public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) g_SqlTuple = SQL_MakeDbTuple("hf", "us", "pw", "asd"); if(g_SqlTuple == Empty_Handle) set_fail_state("Nie mozna utworzyc uchwytu do polaczenia"); new iErr, szError[144]; new Handle:link = SQL_Connect(g_SqlTuple, iErr, szError, 143); if(link == Empty_Handle) { log_amx("Error (%d): %s", iErr, szError); set_fail_state("Brak polaczenia z baza danych"); } new Handle:query; query = SQL_PrepareQuery(link, "CREATE TABLE IF NOT EXISTS 1testxpmodsql1 ( 1nick1 varchar(32 NOT NULL auto_increment,\ `mapa` varchar(32) NOT NULL,\ PRIMARY KEY (`nick`) )"); SQL_Execute(query); SQL_FreeHandle(query); } public Query(failstate, Handle:query, error[]) { if(failstate != TQUERY_SUCCESS) { log_amx("Blad SQL: %s", error); return; } } public client_disconnect(id) { SaveData(id); } ///////////////////////////////////////// public client_conected(id) { new buffer[512],nick[32] ,mapa[32] //get_user_authid(id,steamid,31); get_user_name(id,nick,31) get_mapname(mapa,31); formatex(buffer, charsmax(buffer), "INSERT INTO `testxpmodsql` VALUES (NULL, '%s', '%s');",nick,mapa ); SQL_ThreadQuery(g_SqlTuple, "Query", buffer); } public SaveData(id) { //if(!gConnected) return new Data[1] //Data[0] = id new qCommand[512], nick[32],sid[32],mapa[21]; get_user_authid(id, sid, 31) get_user_name(0, nick, charsmax(nick)); get_mapname(mapa,20) format(qCommand, sizeof qCommand-1, "INSERT INTO testxpmodsql VALUES(%s, %s)", nick,mapa) SQL_ThreadQuery(g_SqlTuple, "SaveHandler", qCommand, Data, 1); } public LoadData(id) { new Data[1] Data[0] = id new q_command[512], nick[32]; get_user_name(id,nick,31) format(q_command,511,"SELECT * FROM testxpmodsql WHERE nick = '%s'",nick) SQL_ThreadQuery(g_SqlTuple, "SaveHandler", q_command, Data, 1); } public checkSqlHandle(FailState,Handle:Query,Error[],Errcode,Data[],DataSize) { if(Errcode) { log_to_file("addons/amxmodx/logs/sql.log","Error on checkSqlHandle query: %s",Error) } if(FailState == TQUERY_CONNECT_FAILED) { log_to_file("addons/amxmodx/logs/sql.log","Could not connect to SQL database.") return PLUGIN_CONTINUE } else if(FailState == TQUERY_QUERY_FAILED) { log_to_file("addons/amxmodx/logs/sql.log","checkSqlHandle Query failed.") return PLUGIN_CONTINUE } new id = Data[0] new linia[512], nick[32], sid[35] ,mapa [31] if(!SQL_MoreResults(Query)) // Nie znaleziono wpisów w bazie danych. Możemy spokojnie utworzyć. SaveData(id) else // A jednak coś znalazł ! Żeby nie robić kolejnej funkcji od razu odczytujemy. { nick[0]= SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "nick")) // Ponieważ funkcja SQL_ReadResult wymaga ID pola, a my go nie mamy musimy posłużyć się funkcją SQL_FieldNameToNum. mapa[0] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "mapa")) // j/w //sid[0] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "steamid")) // j/w } formatex(linia,511," %s %s %s",nick,mapa); log_amx("%s",linia); return PLUGIN_CONTINUE } public SaveHandler(FailState, Handle:Query, Errorcode, Error[], Data[], DataSize) { log_amx("dziala"); new id = Data[0] if(Errorcode) log_amx("Blad w zapytaniu: %s [SaveData]", Error) if(FailState == TQUERY_CONNECT_FAILED) { log_amx("Nie mozna podlaczyc sie do bazy danych.") return PLUGIN_CONTINUE } else if(FailState == TQUERY_QUERY_FAILED) { log_amx("Zapytanie anulowane [SaveData]") return PLUGIN_CONTINUE } return PLUGIN_CONTINUE }
Użytkownik rydy171 edytował ten post 28.01.2014 21:13