$smt->get_result() 在 MySQL 之后给出空结果(仅)INSERT

$smt->get_result() gives empty result after MySQL (only) INSERT

我正在 PHP 中进行用户注册,我正在尝试检查是否实际创建了 INSERT 之后的用户帐户。我究竟做错了什么? $dataR 变量 returns 没有,所以每次注册后,都会创建帐户,但脚本仍然 returns “抱歉,您的注册失败。请返回重试。 “

感谢回复,欢迎提问!

连接:

$this->db_connection = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);

Register.php:

$username = $this->db_connection->real_escape_string(strip_tags($_POST['username'], ENT_QUOTES));
$useremail = $this->db_connection->real_escape_string(strip_tags($_POST['email'], ENT_QUOTES));
$password = $_POST['password_new'];
$options = [
    'cost' => 10,
];
$salt = $this->random_str(64);
$salted_password = $password . $salt;
$password_hash = password_hash($salted_password, PASSWORD_BCRYPT, $options);

$query = $this->db_connection->prepare("SELECT name, mail FROM users WHERE name = ? OR mail = ?");
$query->bind_param('ss', $username, $useremail);
$query->execute();
$results = $query->get_result(); // this works fine

if($results->num_rows == 1) {
    $row = $results->fetch_object();
    
    if($username == $row->name) {
        $this->errors[] = "This username is already taken!";
    } elseif($useremail == $row->mail) {
        $this->errors[] = "This email address is already taken!";
    } else {
        $this->errors[] = "This username / email address is already taken.";
    }
} else {
    $SIS = new SnowflakeIdService;
    $snowflakeID = $SIS->CreateSnowflakeID();
    $sql = $this->db_connection->prepare("INSERT INTO users (snowflake, name, salt, hash, mail) VALUES (?, ?, ?, ?, ?)");
    $sql->bind_param("issss", $snowflakeID, $username, $salt, $password_hash, $useremail);
    $sql->execute();
    $dataR = $sql->get_result(); // this not

    if($dataR) {
        $this->messages[] = "Your account has been created successfully. You can now log in.";
    } else {
        $this->errors[] = "Sorry, your registration failed. Please go back and try again.";
    }
}

我把$dataR = $sql->get_result();改成了$dataR = $sql->affected_rows;,所以最后的代码是这样的:

$sql = $this->db_connection->prepare("INSERT INTO users (snowflake, name, salt, hash, mail) VALUES (?, ?, ?, ?, ?)");
$sql->bind_param("issss", $snowflakeID, $username, $salt, $password_hash, $useremail);
$sql->execute();
$dataR = $sql->affected_rows;
if($dataR > 0) {
     $this->messages[] = "Your account has been created successfully. You can now log in.";
} else {
     $this->errors[] = "Sorry, your registration failed. Please go back and try again.";
}