【发布时间】:2020-05-24 07:44:13
【问题描述】:
在我的网站上,我有一个供新用户使用的注册表单。
当我注册一个帐户时,或者当我的朋友尝试时,该过程成功并且数据被插入到数据库中。
问题在于,当来自世界各地的其他人注册帐户时,大多数情况下会发生这种情况:
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 版本。
我现在不知道该去哪里找了,因为只有一部分注册过程失败了。
任何研究方向都值得赞赏。
【问题讨论】:
-
所以您有无法插入的数据日志,但您无法使用相同的数据复制问题?
-
@PaulSpiegel 正确。当用户使用他的数据时,它会失败。当我使用相同的数据时,它会成功。
-
@FarzadRastgarSani 我已经遇到过这个话题。这些文件是正确的,并且没有从连接中抛出或列出任何错误。在那个主题中,数据插入总是失败。这里没有。
-
如果您在 php.ini 文件中启用,您的服务器将向错误 log_file 抛出一个自动错误,(在大多数服务器上默认启用)您可以在 Cpanel 或错误 log_file 中检查,当然您看不到任何错误日志文件中的错误?
标签: php mysql database mysqli mariadb