Skocz do zawartości

  • Zaloguj korzystając z Facebooka Zaloguj korzystając z Twittera Zaloguj przez Steam Zaloguj poprzez Google      Logowanie »   
  • Rejestracja

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.

  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie

Problem zapytanie xSQL


  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
6 odpowiedzi w tym temacie

#1 rydy171

    Nowy

  • Użytkownik

Reputacja: 2
Nowy

  • Postów:6
  • Imię:l
  • Lokalizacja:Ślask
Offline

Napisano 28.01.2014 21:10

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

  • +
  • -
  • 0

#2 GeDox

    Wszechpomocny

  • Użytkownik

Reputacja: 125
Zaawansowany

  • Postów:315
  • Steam:steam
  • Imię:Przemysław
  • Lokalizacja:Kielce
Offline

Napisano 28.01.2014 23:10

"CREATE TABLE IF NOT EXISTS 1testxpmodsql1 ( `nick` varchar(32) NOT NULL auto_increment,\
    `mapa` varchar(32) NOT NULL,\
    PRIMARY KEY (`nick`) )"

  • +
  • -
  • 0

#3 rydy171

    Nowy

  • Autor tematu
  • Użytkownik

Reputacja: 2
Nowy

  • Postów:6
  • Imię:l
  • Lokalizacja:Ślask
Offline

Napisano 29.01.2014 00:19

"CREATE TABLE IF NOT EXISTS 1testxpmodsql1 ( `nick` varchar(32) NOT NULL auto_increment,\
    `mapa` varchar(32) NOT NULL,\
    PRIMARY KEY (`nick`) )"

dalej to samo


  • +
  • -
  • 0

#4 rydy171

    Nowy

  • Autor tematu
  • Użytkownik

Reputacja: 2
Nowy

  • Postów:6
  • Imię:l
  • Lokalizacja:Ślask
Offline

Napisano 31.01.2014 17:29

refresh


  • +
  • -
  • 0

#5 GwynBleidD

    Godlike

  • Administrator

Reputacja: 1849
Godlike

  • Postów:3066
  • Steam:steam
  • Lokalizacja:Przemyśl
Offline

Napisano 02.02.2014 23:00

1. Kolumna typu VARCHAR nie może posiadać właściwości auto_increment. Utwórz do tego nową kolumnę id, jej przydziel auto_increment i primary key.
2. zamiast ` masz 1 wokół nazwy 1 kolumny i nazwy tabeli
3. Brak nawiasu zamykającego po 32 przy kolumnie nick.

Moja propozycja:
CREATE TABLE IF NOT EXISTS `testxpmodsql` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `nick` varchar(32) NOT NULL,
  `mapa` varchar(32) NOT NULL,
  PRIMARY KEY (`id`)
)

  • +
  • -
  • 0
NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
 
1988650.png?theme=dark

#6 rydy171

    Nowy

  • Autor tematu
  • Użytkownik

Reputacja: 2
Nowy

  • Postów:6
  • Imię:l
  • Lokalizacja:Ślask
Offline

Napisano 03.02.2014 04:51

niestety ale dalej to samo

 

nie wiem moze blad jest w SaveData a ja go nie widze


  • +
  • -
  • 0

#7 GwynBleidD

    Godlike

  • Administrator

Reputacja: 1849
Godlike

  • Postów:3066
  • Steam:steam
  • Lokalizacja:Przemyśl
Offline

Napisano 07.02.2014 22:11

Podaj dokładną treść błędu.


  • +
  • -
  • 0
NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
 
1988650.png?theme=dark




Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych