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

    Статус
    Оффлайн
    Регистрация
    06.05.2023
    Сообщений
    1
    Репутация:
    0 ±

    Проблема с сохранением данных в базу данных.

    В общем и целом, для начала у меня криво сохраняло код безопасности, ну я первым делом решил переписать запрос на сохранение, в принципе, теперь все сохраняется, но в смещенном варианте. Подозреваю, что я как-то криво вписал все данные в запрос, но вроде проверил и должно быть нормально.
    Буду рад помощи с кодом.
    Запрос:
    Код HTML:
    				// SAVE DATA MYSQL
    				static const fmt_query[] = "INSERT INTO `accounts` (`pName`, `pPassport`, `pPassword`, `pMail`, `pSex`, `pSkin`, `pCode`, `pReg_data`, `pReg_ip`, `pAdmin`, `pACode`, `pMoney`) VALUES ('%s', '%s', '%s', '%s', '%d', '%d', '%d', '%s', '%s', '%d', '%d','%d')";
    				new query[sizeof(fmt_query)+(-2+MAX_PLAYER_NAME)+(-2+32)+(-2+64)+(-2+1)+(-2+3)+(-2+5)+(-2+12)+(-2+15)];
    				format(query, sizeof(query), fmt_query, playerid, pInfo[playerid][pName], pInfo[playerid][pPassport], pInfo[playerid][pPassword], pInfo[playerid][pMail], pInfo[playerid][pSex], pInfo[playerid][pSkin], pInfo[playerid][pCode], regdata, regip , pInfo[playerid][pAdmin], pInfo[playerid][pACode],  pInfo[playerid][pMoney]);
    				mysql_query(tikwqq, query); //  ,
    Если данный код ничем не может помочь, дайте знать, где еще может быть информация и я вам ее предоставлю.

  2. #2
    Аватар для Shaolinka
    Пользователь

    Статус
    Оффлайн
    Регистрация
    19.01.2020
    Сообщений
    69
    Репутация:
    8 ±
    Есть несколько факторов, влияющих на твою проблему:
    1. Отсутствие памяти, выделяемой под запрос. Хоть сама методика является неплохой и создана для ленивых, любящих возлагать подсчёт размера массива на плечи компилятора, она, как и обычное выделение памяти, должно быть соответствующим, с учётом максимальной длины всех имеющихся спецификаторов. Поэтому, определённо стоило бы отдебажить массив query, посмотрев какова там ситуация по итогу.
    2. Отсутствие третьего параметра в mysql_query. mysql_query отправляет поточный запрос, ожидая ответа от него, потому в данном случае, как и в многих других, целесообразным решением будет использование многопоточной вариации: mysql_tquery, обрабатывающей код из запроса в ином потоке, не мешая работоспобности основного - то бишь сервера. Поэтому, в твоём случае третьим параметром должен быть false, дабы функция отправила не кешированный запрос(SELECT).

    Это основные из факторов. Также хотелось бы посоветовать использовать экранирование, если речь о не хешированных паролях, ибо вполне себе могут передать SQL код. Ну и айпишник приличия ради как int хранить можно было, дабы не выделять лишних 16 ячеек в стек. Ну и, само по себе сравнение целых чисел должно быть быстрее сравнение строки.

 

 

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

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

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

Ваши права

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