MySql пояснение.

Jafa

Участник
Сообщения
159
Реакции
3
L 03/21/2017 - 09:10:29: [SM] Native "SQL_EscapeString" reported: Invalid database Handle 0 (error: 4) как быть?
--- Добавлено позже ---
new String:Name[125];
GetClientName(client, Name, 125);
SQL_EscapeString(g_hDb, Name, Name, sizeof(Name) - 1);
--- Добавлено позже ---
@Primo,
PHP:
L 03/22/2017 - 00:35:50: [SM] Exception reported: Invalid database Handle 0 (error: 4)
L 03/22/2017 - 00:35:50: [SM] Blaming: MySql.smx
L 03/22/2017 - 00:35:50: [SM] Call stack trace:
L 03/22/2017 - 00:35:50: [SM]   [0] SQL_EscapeString
L 03/22/2017 - 00:35:50: [SM]   [1] Line 21, MySQL.sp::OnClientPostAdminCheck

подскажите пожалуйста..
--- Добавлено позже ---
@Primo,
PHP:
new String:sQuery[512];
        Format(sQuery, sizeof(sQuery), "INSERT INTO %s (steamid, ip, name) VALUES ('%s', '%s', '%s') ON DUPLICATE KEY UPDATE ip = '%s',  name = '%s'",
        "clients", Steam_ID, Ip, Name, Ip, Name);

Вот так записал себя - меня успешно внесло в базу! После чего я сменил ник и снова записал себя - появилось 2 меня но под разными никами.. почему так? Ведь должно было просто обновить мой ник в базе... стимд то тот же остался, просто ник сменился.

Блин оказывается даже если ник не менять меня все равно в базу записывает повторно.. (( как быть?

Цель: Нужно записать меня в базу если меня там нет, если я там есть нужно обновить мой ник и стимид в базе!((
--- Добавлено позже ---
@Se7en_RUS, ваш код не сработал почему-то... гляньте выше..
--- Добавлено позже ---
Все попер.. методом проб и ошибок)
 
Последнее редактирование:

Kruzya

Участник
Сообщения
12,970
Реакции
10,914
  • Команда форума
  • #23
Не знаю, в чём у Вас действительно возникла проблема...

Создаём таблицу, помечаем SteamID уникальной колонкой, которая не может ни при каких обстоятельствах повторяться.
Далее, когда получаем данные об игроке... Если ничего от MySQL не пришло, то можно сделать INSERT в базу игрока сразу, с нулевыми значениями, кроме SteamID.
И уже при выходе, обратно залить с помощью UPDATE.
 

White Wolf

🍉
Сообщения
2,382
Реакции
2,187
  • Команда форума
  • #24

Jafa

Участник
Сообщения
159
Реакции
3
Народ подскажите как можно отправить 1 запросом INSERT INTO __ VALUES ___ ON DUPLICATE KEY UPDATE ___ изменения данных сразу в 2 таблицах базы.
--- Добавлено позже ---
@White Wolf, @[[[[KaZaK]]]],
PHP:
new String:Steam_ID[32];
        GetClientAuthId(client, AuthId_Steam3, Steam_ID, sizeof(Steam_ID));
       
        new String:Name[75];
        GetClientName(client, Name, 75);
        SQL_EscapeString(g_hDb, Name, Name, sizeof(Name));
       
        new String:Ip[16];
        GetClientIP(client, Ip, 16, 1);
       
        new String:sQuery[256];
        Format(sQuery, sizeof(sQuery), "INSERT INTO %s (steamid, ip, name) VALUES ('%s', '%s', '%s') ON DUPLICATE KEY UPDATE ip = '%s',  name = '%s'", 
        "clients", Steam_ID, Ip, Name, Ip, Name);
       
        SQL_TQuery(g_hDb, SQL_CheckSetCallback, sQuery, client);
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 ''[Na\'\'\\\'\\\\\\\'\\\\\\\\\\\\\\\'\' at line 1

Подскажите где ошибка?
 
Последнее редактирование:
Сверху Снизу