Пользовательские данные не вставляются в базу данных в половине случаев - PullRequest
0 голосов
/ 08 февраля 2020

На моем веб-сайте есть форма для регистрации новых пользователей.
Когда я регистрирую учетную запись или когда мои друзья пробуют ее, процесс завершается успешно, и данные помещаются в базу данных.

Проблема в том, что, когда другие люди со всего мира регистрируют учетную запись большую часть времени, это происходит:
1) Процесс завершается успешно, без ошибок.
, но
2) Данные не вставляются в базу данных.

Соединение с базой данных создается с помощью:

// Connecting to the database
$database = new mysqli($DatabaseServer, $DatabaseUser, $DatabasePass, $DatabaseName);

В процессе регистрации данные вставляются с помощью:

$stmt = $database->prepare("INSERT INTO `users` (`username`, `password`, `email`, `email_activation_code`, `name`, `active`, `ip`, `date`) VALUES (?, ?, ?, ?, ?, ?, ?, ?)");

$stmt->bind_param('ssssssss', $_POST['username'], $password, $_POST['email'], $email_code, $_POST['name'], $active, $_SERVER['REMOTE_ADDR'], $date);
$result = $stmt->execute();
$stmt->close();

До сих пор я пробовал:
- зарегистрироваться из нескольких мест с помощью vpn и из разных физических мест, все успешно.
-Я сделал записи данных, которые используются при регистрации, когда это терпит неудачу (с разрешениями пользователя).
Ничего странного не видно, и когда я использую его данные, я могу безошибочно зарегистрировать учетную запись.
При этом мы оба попробовали это примерно в одно и то же время, пока у меня была открытая база данных, так что я уверен база данных работает в этот момент (или ошибка должна была быть выброшена из-за отсутствующего соединения в любом случае).
-Я пытался создать журнал $stmt->error_list, который приводит к ничему (потому что не выдается никаких ошибок ).
-Нормальная ошибка при перехвате 'try catch' также не приводит ни к чему, потому что, опять же, никаких ошибок не выдается.

Я заметил проблему после обновления базы данных до mariadb 10.3.20. Это сейчас версия 10.3.22.

Я нахожусь в том положении, когда я не знаю, где искать, так как только часть процесса регистрации завершается неудачей.
Любое направление, в которое нужно смотреть, ценится .

1 Ответ

0 голосов
/ 09 февраля 2020

Мы прошли через все это снова, код и базу данных с несколькими зарегистрированными пользователями, которые потерпели неудачу и успешно прошли процесс регистрации.

Проблема была не в коде, а в самой базе данных. Предыдущий сопровождающий установил для столбца, в котором хранится ip, значение varchar (32), что достаточно для адреса Ipv4, но не для адреса IPv6. Мы изменили столбец на varchar (64), поэтому адрес снова подходит. Кажется, это решает проблему ... если только нет чего-то еще, но я не буду знать, пока новые пользователи не попытаются зарегистрироваться снова.

Все еще странно, что ошибка не была зарегистрирована ни в одном из журналов. С комментариями, приведенными под комментариями, я постараюсь выяснить, почему он не был зарегистрирован, и он сделал вид, что все в порядке, и с этим я буду следить за любыми новыми ошибками, которые будут регистрироваться.
Спасибо за помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...