Заказать Сервер Заказать Плагин Контакты Поиск

[ вход ]
[ последние сообщения ]

Страница 1 из 212»
Форум » SourceMod - Counter Strike Source && CS GO » Обсуждение » Проверка наличия PRIMARY KEY
Проверка наличия PRIMARY KEY
Regedit Дата: Среда, 09.09.2015, 15:13:01 | Сообщение # 1
Сообщений: 135
Репутация: 1 [ +/- ]
Мне нужно проверить есть ли в таблице уникальный Steam_ID ? Как это сделать?
Просто если он есть но мне нужно будет по нему делать UPDATE к его значениям, а если нет то INSERT...

Очень надеюсь что я обьяснил понятно)))
 
Scarface_slv Дата: Среда, 09.09.2015, 15:36:00 | Сообщение # 2
Сообщений: 749
Репутация: 61 [ +/- ]
ну с SELECT пробуешь получить знач стима.
В блоке уже проверяешь результат
if (!SQL_FetchRow(result)) значит нет стима. INSERT
else есть стим UPDATE


Сообщение отредактировал Scarface_slv - Среда, 09.09.2015, 16:18:22
 
Tokami Дата: Среда, 09.09.2015, 16:49:01 | Сообщение # 3
Сообщений: 238
Репутация: 19 [ +/- ]
Scarface_slv, в его случае, ему это не поможет помойму
 
Regedit Дата: Среда, 09.09.2015, 18:16:47 | Сообщение # 4
Сообщений: 135
Репутация: 1 [ +/- ]
Цитата Scarface_slv ()
ну с SELECT пробуешь получить знач стима.
В блоке уже проверяешь результат
if (!SQL_FetchRow(result)) значит нет стима. INSERT
else есть стим UPDATE


Тогда обясни мне такого рода выражение в блоке SELECT

Код
if(SQL_HasResultSet(hndl) && SQL_FetchRow(hndl))
{
}
 
Tokami Дата: Среда, 09.09.2015, 18:48:01 | Сообщение # 5
Сообщений: 238
Репутация: 19 [ +/- ]
Regedit, да, мне сказали должно работать, пробуй
 
Regedit Дата: Среда, 09.09.2015, 19:28:09 | Сообщение # 6
Сообщений: 135
Репутация: 1 [ +/- ]
Цитата Tokami ()
Regedit, да, мне сказали должно работать, пробуй


Что пробовать ?

if(SQL_HasResultSet(hndl) && SQL_FetchRow(hndl))
{
}

это ?
или

if (!SQL_FetchRow(hndl))
 
_R1KO_ Дата: Среда, 09.09.2015, 19:39:29 | Сообщение # 7
Сообщений: 187
Репутация: 27 [ +/- ]
Что вы несете?
Если я верно понял и нужно проверить что если игрок есть базе то обновить его данные, если нет - добавить то пост 2 от Scarface_slv решает все его проблемы. Конечно можно по*бать себе мозг и сделать это одним запросом но зачем?
 
Regedit Дата: Среда, 09.09.2015, 20:14:54 | Сообщение # 8
Сообщений: 135
Репутация: 1 [ +/- ]
Код
String:GetMySQL_Query(String:table[], String:key[], String:key_value[], String:arg[512])
{
      return ")(yй"
}

SetMySQL_Query(String:table[], String:key[], String:key_value[], String:arg[400], String:arg_value[])
{   
   GetMySQL_Query(table, key, key_value, arg);
}


Компилятор жалуется на GetMySQL_Query(table, key, key_value, arg); (SGJM/functions/MySQL.sp(73) : error 047: array sizes do not match, or destination array is too small)

Почему? передаваемые данные даже меньше чем принимает GetMySQL_Query...

String:arg[512] сделать меньше не могу т.к мне нужно записать эту строку в глобальную переменную для дальнейших действий..

2) Как передать в public SQL_SelectPlayerCallback(Handle:owner, Handle:hndl, const String:error[], any:data)
строку temp_info_for_bd чтоб сделать SQL_FieldNameToNum(hndl, temp_info_for_bd, n);

Не ругайтесь впервые работаю с sql!


Сообщение отредактировал Regedit - Среда, 09.09.2015, 20:19:09
 
_R1KO_ Дата: Среда, 09.09.2015, 20:18:36 | Сообщение # 9
Сообщений: 187
Репутация: 27 [ +/- ]
Потому что во-первых это строка, а строки не нужно как инт возвращать:
Код
return ")(yй"

Тебе нужно форматировать входящую строку key_value или что там у тебя.
Во-вторых ты задаешь размер String:arg[512], а приходит у тебя неизвестно что.
 
Regedit Дата: Среда, 09.09.2015, 20:27:57 | Сообщение # 10
Сообщений: 135
Репутация: 1 [ +/- ]
Цитата _R1KO_ ()
Потому что во-первых это строка, а строки не нужно как инт возвращать:
Код
return ")(yй"

Тебе нужно форматировать входящую строку key_value или что там у тебя.
Во-вторых ты задаешь размер String:arg[512], а приходит у тебя неизвестно что.


блин точно.. форматом сбить размер строки (если я правильно понял) ))

и на 2 вопрос еще бы..)

Добавлено (09.09.2015, 20:25:07)
---------------------------------------------
Крч ппц какй-то

Добавлено (09.09.2015, 20:25:20)
---------------------------------------------
в 3 соснах заблудился.

Добавлено (09.09.2015, 20:27:57)
---------------------------------------------
Ура скомпилил.

2) Как передать в public SQL_SelectPlayerCallback(Handle:owner, Handle:hndl, const String:error[], any:data)
строку temp_info_for_bd чтоб сделать SQL_FieldNameToNum(hndl, temp_info_for_bd, n);

 
_R1KO_ Дата: Среда, 09.09.2015, 20:33:21 | Сообщение # 11
Сообщений: 187
Репутация: 27 [ +/- ]
Regedit, в SQL_TQuery есть параметр data. Через него можешь datapack передать
 
Regedit Дата: Среда, 09.09.2015, 20:49:09 | Сообщение # 12
Сообщений: 135
Репутация: 1 [ +/- ]
Цитата _R1KO_ ()
Regedit, в SQL_TQuery есть параметр data. Через него можешь datapack передать

спс только что так и сделал =)

CREATE TABLE IF NOT EXISTS clients (key VARCHAR(35) PRIMARY KEY, name VARCHAR(125), ip_addres VARCHAR(32));

ошибка

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'VARCHAR(35) PRIMARY KEY, name VARCHAR(125), ip_addres VARCHAR(32))' at line 1

Что тут не так еще!???
 
Tokami Дата: Четверг, 10.09.2015, 19:19:11 | Сообщение # 13
Сообщений: 238
Репутация: 19 [ +/- ]
Regedit, имя key в MySQL нельзя использовать!
 
_R1KO_ Дата: Четверг, 10.09.2015, 19:25:43 | Сообщение # 14
Сообщений: 187
Репутация: 27 [ +/- ]
Tokami, я использовал и норм
 
Tokami Дата: Пятница, 11.09.2015, 16:24:30 | Сообщение # 15
Сообщений: 238
Репутация: 19 [ +/- ]
_R1KO_, в sqlite может да, в mysql не верю попробуй прямо щас открыть phpmyadmin и создать табличку с ячейкой key
 
Форум » SourceMod - Counter Strike Source && CS GO » Обсуждение » Проверка наличия PRIMARY KEY
Страница 1 из 212»
Поиск: