Русское сообщество по скриптингу

Статус выполнения запроса через SQL_ThreadQuery  [Решено]

Все вопросы по скриптингу для AMXX, помощь в редактировании плагинов.

Модераторы: Subb98, liFe iS GoOD

Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

В данном разделе форума разрешено создавать темы, касающие только скриптинга для AMX Mod X.

Правила при создании новой темы:
1. При вставке кода плагина необходимо использовать тег [code=php].
2. Любые изображения должны быть загружены, как вложения к вашему сообщению.
3. При описании проблемы или запросе на помощь в редактировании плагина обязательно выкладывайте исходник sma плагина.

Статус выполнения запроса через SQL_ThreadQuery

Сообщение hren_morjovui » 11 апр 2021, 13:29

К примеру нужно проверить есть ли запись в базе и если нет то выполнить INSERT...
Код: Выделить всё
SQL_ThreadQuery(sql_cache_connect"sql_handler""SELECT `id` FROM `users` WHERE `nick` = 'PLAYER' "datacharsmax(data)); 
вот как мне узнать результат запроса если этот "SQL_ThreadQuery" ничего не возвращает -_-
"В этом мире неизбежны три вещи: смерть, налоги и гравитация."
Аватара пользователя
hren_morjovui
 
Сообщения: 258
Зарегистрирован: 29 май 2018, 09:15
Благодарил (а): 88 раз.
Поблагодарили: 22 раз.
Опыт программирования: Больше трех лет
Языки программирования: Pawn
PHP
jQuery

Re: Статус выполнения запроса через SQL_ThreadQuery

Сообщение Leonidddd » 11 апр 2021, 14:31

hren_morjovui, не весь код приклеплён и непонятно, что у вас находится в хандлере запроса. А так,
через проверку if( SQL_NumResults(Query) > 0 ), можно понять, что ответ пришёл и там что-то уже есть, т.е. запись в базе есть.
Аватара пользователя
Leonidddd
Модератор
 
Сообщения: 2557
Зарегистрирован: 08 апр 2012, 18:13
Откуда: г. Запорожье
Благодарил (а): 192 раз.
Поблагодарили: 718 раз.

Re: Статус выполнения запроса через SQL_ThreadQuery

Сообщение hren_morjovui » 11 апр 2021, 15:35

Leonidddd, ну это понятно... но мне в зависимости от результат нужно либо выполнить INSERT/DELETE либо нет и не внутри функции "sql_handler"...

то есть у меня приходит запрос в
Код: Выделить всё
mysql_query(player_id, "SELECT * FROM `%s` WHERE `nick` = '[NICK]' ", db_table);

внутри функции обрабатываться как мне нужно и потом SQL_ThreadQuery...

вот мне нужно чтобы mysql_query() возвращала результат запроса...
"В этом мире неизбежны три вещи: смерть, налоги и гравитация."
Аватара пользователя
hren_morjovui
 
Сообщения: 258
Зарегистрирован: 29 май 2018, 09:15
Благодарил (а): 88 раз.
Поблагодарили: 22 раз.
Опыт программирования: Больше трех лет
Языки программирования: Pawn
PHP
jQuery

Re: Статус выполнения запроса через SQL_ThreadQuery

Сообщение Mistrick » 11 апр 2021, 16:45

SQL_ThreadQuery - асинхронный запрос, он ничего вам не вернет. Результат будет в хендлере. Вы тут ничего не измените.
Хотите через возвращенное значение, пилите на синхронные запросы, только потом не жалуйтесь на лаги и подвисания на сервере, т.к. синхронные запросы блокируют процесс до получения ответа.
Аватара пользователя
Mistrick
Скриптер
 
Сообщения: 2940
Зарегистрирован: 04 ноя 2012, 18:15
Благодарил (а): 43 раз.
Поблагодарили: 1247 раз.
Языки программирования: PAWN
С/С++(few above zero)

Re: Статус выполнения запроса через SQL_ThreadQuery  [Решено]

Сообщение hren_morjovui » 11 апр 2021, 17:32

Mistrick, зачем пп читать да? лишь бы вставить свои 5ть копеек
этот "SQL_ThreadQuery" ничего не возвращает -_-


Добавлено спустя 28 минут 4 секунды:
Решено при помощи set_task и глобальной переменной
"В этом мире неизбежны три вещи: смерть, налоги и гравитация."
Аватара пользователя
hren_morjovui
 
Сообщения: 258
Зарегистрирован: 29 май 2018, 09:15
Благодарил (а): 88 раз.
Поблагодарили: 22 раз.
Опыт программирования: Больше трех лет
Языки программирования: Pawn
PHP
jQuery

Re: Статус выполнения запроса через SQL_ThreadQuery

Сообщение Leonidddd » 11 апр 2021, 20:52

Альтернативное решение:

Код: Выделить всё
IF NOT EXISTS (SELECT `id` FROM `users` WHERE `nick` = 'PLAYER')
BEGIN
    
--- INSERT HERE
END
Аватара пользователя
Leonidddd
Модератор
 
Сообщения: 2557
Зарегистрирован: 08 апр 2012, 18:13
Откуда: г. Запорожье
Благодарил (а): 192 раз.
Поблагодарили: 718 раз.


Вернуться в Скриптинг

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot] и гости: 10