Перейти к содержимому


Фотография

Ошибка в mysql

mysql

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 4

#1 Alexander_Mirny

Alexander_Mirny

    Пользователь

  • Пользователь
  • PipPipPip
  • 215 сообщений

Отправлено 07 Январь 2020 - 13:19

Привет всем, такая у меня проблемка.

Использую mysql как хранилище игровых монет

 

Вообщем реализовал я подключение mysql все работает 

Но когда срабатывает выдача монеты то сразу же выдает ошибку в mysql 

Ошибка:

 

You have an error in your SQL syntax; check the manual that corresponds to

Это когда начинает начисляться монеты в базу такая вот ошибка

Код вроде соответствует но пишет что не соответствует.

 

Вот сам код начисление монет.

public PointsLevel(any:client,any:Value)
{
	new String:pwlvl = Info[client][cBonuspoint];
	pwlvl +=Value;
	new String:clientname[32];
	new String:steamid[32];
	
	GetClientName(client, clientname, 32);
	GetClientAuthId(client, AuthId_Steam2, steamid, 32);
	
	new query[300];
	
	Format(query, sizeof(query), "INSERT INTO %pointstable (Name, SteamId, Points) VALUES ('%s', '%s', '%s')",clientname, steamid, pwlvl);
	
	new Handle:queryI = SQL_Query(Connect, query);
	
	if(queryI != INVALID_HANDLE)
	{
		ReplyToCommand(client, "Игроку %s начислены игровые монеты",clientname);
	}
	else
	{
		SQL_GetError(Connect, Error, sizeof(Error));
		ReplyToCommand(client, "Игроку %s не начислены монеты ошибка Mysql: %s",clientname, Error);
	}
}

Начисляется 

PointsLevel(attacker,4);//4 монеты

Кто откликнется, спасибо.


Переменная 

new String:Error[76];

Код подключения прикреплять не буду в нем все норм )))


Сообщение отредактировал Alexander_Mirny: 07 Январь 2020 - 13:24


#2 Alexander_Mirny

Alexander_Mirny

    Пользователь

  • Пользователь
  • PipPipPip
  • 215 сообщений

Отправлено 07 Январь 2020 - 20:25

Переписал таблицу, посмотрю что будет. Сюда скину код если все исправно и если все нормально работает.


Вообщем сам же и исправил свою ошибку переписал код таблицы монеты сохраняет 

 

Переписанный код 

public PointsLevel(any:client,any:Value)
{
	new pwlvl = Info[client][cBonuspoint];
	pwlvl +=Value;
	new String:clientname[32];
	new String:steamid[32];
	
	GetClientName(client, clientname, 32);
	GetClientAuthId(client, AuthId_Steam2, steamid, 32);
	
	new String:query[128];
	
	Format(query, 256, "INSERT INTO `pointstable` (name, steamid, points) VALUES ('%s', '%s', '%d')",clientname, steamid, pwlvl);
	
	new Handle:queryI = SQL_Query(Connect, query);
	
	if(queryI != INVALID_HANDLE)
	{
		ReplyToCommand(client, "Игроку %s начислены игровые монеты",clientname);
	}
	else
	{
		SQL_GetError(Connect, Error, sizeof(Error));
		ReplyToCommand(client, "Игроку %s не начислены монеты ошибка Mysql: %s",clientname, Error);
	}
}

Как все доделаю выложу этот плагин, поясню что да как в нем.


Спасибо этой статье https://wiki.alliedm...Mod_Scripting) 

Разобрался =)



#3 dragokas

dragokas

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 774 сообщений

Отправлено 09 Январь 2020 - 1:28

Можешь потестировать различные запросы с помощью отдельной программы в винде:

https://dev.mysql.co...oads/workbench/

 

Ну а так, похожие запросы по INSERT, UPDATE можешь глянуть в HxStats или моем форке, где используется многопоточные запросы, неблокирующие сервер:

https://forums.allie...ad.php?t=298535

https://forums.allie...ad.php?t=320247



#4 Alexander_Mirny

Alexander_Mirny

    Пользователь

  • Пользователь
  • PipPipPip
  • 215 сообщений

Отправлено 09 Январь 2020 - 10:17

Можешь потестировать различные запросы с помощью отдельной программы в винде:

https://dev.mysql.co...oads/workbench/

 

Ну а так, похожие запросы по INSERT, UPDATE можешь глянуть в HxStats или моем форке, где используется многопоточные запросы, неблокирующие сервер:

https://forums.allie...ad.php?t=298535

https://forums.allie...ad.php?t=320247

 

 

Я уже разобрался, и обновление таблицы и.т.д, с этим со всем ознакомился   https://wiki.alliedm...Mod_Scripting).

Раннее в сампе тоже приходилось работать с mysql, оказалось почти тоже самое освоил все кароч.



#5 dragokas

dragokas

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 774 сообщений

Отправлено 09 Январь 2020 - 10:39

Тогда настоятельно советую тебе все таки ознакомиться с разделом "Threading" в той статье.

А тестировать запросы всегда быстрее и удобнее через отдельную программу, тогда и не будет в продакшене ошибок с синтаксисом SQL.


Сообщение отредактировал dragokas: 09 Январь 2020 - 10:40




Темы с аналогичным тегами mysql

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных