SQL_ReadResult
Patman
01.07.2010
Witam, proszę o pomoc w użyciu funkcji SQL_ReadResult. Chciałbym, aby po wpisaniu "wyświetl" wyświetliła się informacja z bazy MySQL np. z bazy "base" tabela "test"(id,text). Wszelkie próby nieudane. Udały się tylko inne operacje na bazie. Na forum fragmenty obszernych pluginów. Chciałbym, aby ktoś napisał mi to czarno na białym ten prosty kod. Dziękuję.
#include <amxmodx> #include <amxmisc> #include <sqlx> #define PLUGIN "test" #define VERSION "1.0" #define AUTHOR "author" public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) register_concmd("wyswietl","make"); // Add your code here... } public make() { new Handle:Tuple = SQL_MakeDbTuple("localhost", "root", "pw", "base") SQL_ThreadQuery(Tuple, "read", "SELECT text FROM test LIMIT 1") } public read() { //PLEASE HELP }
R3X
01.07.2010
Jeśli ThreadQuery to możesz wykorzystać parametry podawane do funkcji read.
Czytając stringa z pierwszej kolumny (SELECT pierwsza, druga, trzecia_kolumna FROM ....) podajesz drugi parametr 0, potem tablicę i max długość.
Do wątku możesz dodać własne parametry, tu przydałoby się id gracza (tablica data[])
Warto by było sprawdzić czy wynik można odczytać (SQL_MoreResults())
Czytając stringa z pierwszej kolumny (SELECT pierwsza, druga, trzecia_kolumna FROM ....) podajesz drugi parametr 0, potem tablicę i max długość.
Do wątku możesz dodać własne parametry, tu przydałoby się id gracza (tablica data[])
Warto by było sprawdzić czy wynik można odczytać (SQL_MoreResults())
#include <amxmodx> #include <amxmisc> #include <sqlx> #define PLUGIN "test" #define VERSION "1.0" #define AUTHOR "author" new Handle:Tuple; public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) register_concmd("wyswietl","make"); Tuple = SQL_MakeDbTuple("localhost", "root", "pw", "base") } public make(id) { new data[1] data[0] = id; SQL_ThreadQuery(Tuple, "read", "SELECT text FROM test LIMIT 1", data, 1) } public read(FailState,Handle:Query,Error[],Errcode,Data[],DataSize) { new id = Data[0]; if(id && !is_user_connected(id)) return PLUGIN_CONTINUE if(Errcode) { console_print(id, "Error on Save_xp query: %s",Error) return PLUGIN_CONTINUE } if(FailState == TQUERY_CONNECT_FAILED) { console_print(id,"Could not connect to SQL database.") return PLUGIN_CONTINUE } else if(FailState == TQUERY_QUERY_FAILED) { console_print(id,"Query failed") return PLUGIN_CONTINUE } //if(SQL_MoreResults(query)){ new szText[128]; SQL_ReadResult(Query, 0, szText, 127); console_print(id,"Text = %s", szText) //} }
GwynBleidD
09.07.2010
Co do funkcji SQL_ReadResult: jeśli nie znasz numeru kolumny (nie chce Ci się liczyć, zmieniasz coś w kodzie itp) możesz podać coś takiego:
W ten sposób amx sam sobie obliczy numer kolumny, wystarczy podać jej nazwę
SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "pierwsza"), szText, 127);
W ten sposób amx sam sobie obliczy numer kolumny, wystarczy podać jej nazwę