Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 1 из 2 1 2 ПоследняяПоследняя
Показано с 1 по 10 из 14
  1. #1
    Аватар для nikvlad
    Пользователь

    Статус
    Оффлайн
    Регистрация
    04.02.2016
    Сообщений
    94
    Репутация:
    2 ±

    По поводу MySQL R7-2

    Что не так в этом коде?
      Открыть/закрыть
    Код:
    stock RegisterPlayer(playerid)
    {
    	new query[170];
    	format(query, sizeof(query), "INSERT INTO `accounts` (`nickname`, `email`, `password`, `regdata`, `regip`, `age`, `sex`, `race`) VALUES ('%s','%e','%e','%s','%s','%d','%d','%d')", pData[playerid][pNickname],pData[playerid][pEmail] ,pData[playerid][pPassword], pData[playerid][pRegData], pData[playerid][pRegIP],pData[playerid][pAge], pData[playerid][pGender],pData[playerid][pRace]);
    	mysql_function_query(dbHandle, query, false, "", "");
    }

    Не регистрирует аккаунт. (Вообще не появляется новая строчка)
    Вот mysql_log:
      Открыть/закрыть
    Код:
    [23:47:43] Passing query INSERT INTO `accounts` (`nickname`, `email`, `password`, `regdata`, `regip`, `age`, `sex`, `race`) VALUES ('[email protected]','e','e','[email protected]','cn | 
    [23:47:43] CMySQLHandler::ProcessQueryThread() - Error will be triggered to OnQueryError()
    [23:47:43] OnQueryError() - Called.

  2. #2
    Аватар для ziggi
    Проверенный

    Статус
    Оффлайн
    Регистрация
    14.05.2015
    Сообщений
    1,181
    Репутация:
    790 ±
    В format нет спецификатора %e. Используй %q или используй mysql_format

  3. #3
    Аватар для nikvlad
    Пользователь

    Статус
    Оффлайн
    Регистрация
    04.02.2016
    Сообщений
    94
    Репутация:
    2 ±
    Цитата Сообщение от ziggi Посмотреть сообщение
    В format нет спецификатора %e. Используй %q или используй mysql_format
    использовал mysql_format. При использовании спецификатора %e просто выключало сервер без ошибок в лог. Я сделал %s. Аккаунт сохранился, но появился такой артефакт:
    (Вводил пароль: 123456, e-mail: [email protected].)

    Код:
    stock RegisterPlayer(playerid)
    {
    	new query[170];
    	mysql_format(dbHandle,query, "INSERT INTO `accounts` (`nickname`, `email`, `password`, `regdata`, `regip`, `age`, `sex`, `race`) VALUES ('%s','%s','%s','%s','%s','%d','%d','%d')", pData[playerid][pNickname],pData[playerid][pEmail] ,pData[playerid][pPassword], pData[playerid][pRegData], pData[playerid][pRegIP],pData[playerid][pAge], pData[playerid][pGender],pData[playerid][pRace]);
    	mysql_function_query(dbHandle, query, false, "", "");
    }
    Я также вывел все эти переменные в printf. Они записываются нормально.
    Последний раз редактировалось nikvlad; 15.06.2016 в 10:42.

  4. #4
    Аватар для StevenH
    Пользователь

    Статус
    Оффлайн
    Регистрация
    13.10.2015
    Сообщений
    516
    Репутация:
    21 ±
    Цитата Сообщение от nikvlad Посмотреть сообщение
    использовал mysql_format. При использовании спецификатора %e просто выключало сервер без ошибок в лог. Я сделал %s. Аккаунт сохранился, но появился такой артефакт:
    (Вводил пароль: 123456, e-mail: [email protected].)

    Код:
    stock RegisterPlayer(playerid)
    {
    	new query[170];
    	mysql_format(dbHandle,query, "INSERT INTO `accounts` (`nickname`, `email`, `password`, `regdata`, `regip`, `age`, `sex`, `race`) VALUES ('%s','%s','%s','%s','%s','%d','%d','%d')", pData[playerid][pNickname],pData[playerid][pEmail] ,pData[playerid][pPassword], pData[playerid][pRegData], pData[playerid][pRegIP],pData[playerid][pAge], pData[playerid][pGender],pData[playerid][pRace]);
    	mysql_function_query(dbHandle, query, false, "", "");
    }
    Я также вывел все эти переменные в printf. Они записываются нормально.

    Разве емайл надо записывать не через strmid?
    Последний раз редактировалось StevenH; 15.06.2016 в 11:25.

  5. #5
    Аватар для nikvlad
    Пользователь

    Статус
    Оффлайн
    Регистрация
    04.02.2016
    Сообщений
    94
    Репутация:
    2 ±
    Цитата Сообщение от StevenH Посмотреть сообщение
    Разве емайл надо записывать не через strmid?
    Я записывал через mysql_real_escape_string.

  6. #6
    Аватар для ziggi
    Проверенный

    Статус
    Оффлайн
    Регистрация
    14.05.2015
    Сообщений
    1,181
    Репутация:
    790 ±
    Судя по вики: http://wiki.sa-mp.com/wiki/MySQL/R33#mysql_format
    Ты используешь функцию mysql_format неправильно. Нужно указать размер query.
    PHP код:
    mysql_format(dbHandlequerysizeof(query), "INSERT INTO `accounts` (`nickname`, `email`, `password`, `regdata`, `regip`, `age`, `sex`, `race`) VALUES ('%s','%s','%s','%s','%s','%d','%d','%d')"pData[playerid][pNickname],pData[playerid][pEmail] ,pData[playerid][pPassword], pData[playerid][pRegData], pData[playerid][pRegIP],pData[playerid][pAge], pData[playerid][pGender],pData[playerid][pRace]); 
    Также выведи то, что сформировалось с помощью print:
    PHP код:
    print(query); 

  7. #7
    Аватар для nikvlad
    Пользователь

    Статус
    Оффлайн
    Регистрация
    04.02.2016
    Сообщений
    94
    Репутация:
    2 ±
    Цитата Сообщение от ziggi Посмотреть сообщение
    Судя по вики: http://wiki.sa-mp.com/wiki/MySQL/R33#mysql_format
    Ты используешь функцию mysql_format неправильно. Нужно указать размер query.
    PHP код:
    mysql_format(dbHandlequerysizeof(query), "INSERT INTO `accounts` (`nickname`, `email`, `password`, `regdata`, `regip`, `age`, `sex`, `race`) VALUES ('%s','%s','%s','%s','%s','%d','%d','%d')"pData[playerid][pNickname],pData[playerid][pEmail] ,pData[playerid][pPassword], pData[playerid][pRegData], pData[playerid][pRegIP],pData[playerid][pAge], pData[playerid][pGender],pData[playerid][pRace]); 
    Также выведи то, что сформировалось с помощью print:
    PHP код:
    print(query); 
    Хм, ошибка: error 035: argument type mismatch (argument 3)
    Я использую MySQL R7-2, в том же вики написано так: http://wiki.sa-mp.com/wiki/MySQL#mysql_format


  8. #8
    Аватар для ziggi
    Проверенный

    Статус
    Оффлайн
    Регистрация
    14.05.2015
    Сообщений
    1,181
    Репутация:
    790 ±
    Цитата Сообщение от nikvlad Посмотреть сообщение
    Я использую MySQL R7-2,[/url]
    Почему? Оно же такое старое...

    Цитата Сообщение от nikvlad Посмотреть сообщение
    Очевидно, что данные в pData[playerid][pNickname] и в прочие строки записываются неправильно.
    Последний раз редактировалось ziggi; 15.06.2016 в 14:32.

  9. #9
    Аватар для nikvlad
    Пользователь

    Статус
    Оффлайн
    Регистрация
    04.02.2016
    Сообщений
    94
    Репутация:
    2 ±
    Решил вот таким способом, но этот код похож на костыль, можно его как-нибудь оптимизировать?

    Код:
     	new query[201], pass[16], email[32],ip[16],data[16], name[MAX_PLAYER_NAME];
    	GetPVarString(playerid,"email",email,32);
    	GetPVarString(playerid,"pass",pass,16);
    	GetPVarString(playerid,"name",name,MAX_PLAYER_NAME);
    	format(data, sizeof(data), "%s", date("%dd.%mm.%yyyy", gettime()));
     	GetPlayerIp(playerid, ip, sizeof(ip));
    	format(query, sizeof(query), "INSERT INTO `accounts` (`nickname`, `password`, `regdata`, `regip`, `email`, `age`, `sex`, `race`) VALUES ('%s','%s','%s','%s','%s','%d','%d','%d')", name, pass, data, ip, email,pData[playerid][pAge], pData[playerid][pGender],pData[playerid][pRace]);
    	mysql_function_query(dbHandle, query, false, "", "");
    - - - Добавлено - - -

    Цитата Сообщение от ziggi Посмотреть сообщение
    Почему? Оно же такое старое...



    Очевидно, что данные в pData[playerid][pNickname] и в прочие строки записываются неправильно.
    Это мои первые опыты, я это для души делаю)

  10. #10
    Аватар для ziggi
    Проверенный

    Статус
    Оффлайн
    Регистрация
    14.05.2015
    Сообщений
    1,181
    Репутация:
    790 ±
    Покажи как ты пытаешься записать данные в pData[playerid][pNickname].

 

 
Страница 1 из 2 1 2 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •