PHP 在 mysql table 中创建用户

PHP create user in mysql table

if ($stmt = $connection->prepare('INSERT INTO users (name, id, password, email, city, avatar, about, activation_code) VALUES (?, ?, ?, ?, ?, ?, ?, ?)')) {
        $password = password_hash($_POST['password'], PASSWORD_DEFAULT);
        $uniqid = uniqid();
        $stmt->bind_param('ssssssss', $_POST['name'], $_POST['id'], $password, $email, $_POST['city'], $_POST['avatar'], $_POST['about'], $uniqid);
        $stmt->execute();
        $stmt->store_result();
        echo 'Account's created';
    } else {
        echo 'Error';
    }

这部分代码不会在 myqsl 数据库中创建用户。但如果我 此代码:

$stmt->bind_param('ssssssss', $_POST['name'], $_POST['id'], $password, $email, $_POST['city'], $_POST['avatar'], $_POST['about'], $uniqid);

替换为:

$stmt->bind_param('ssssssss', $_POST['name'], $_POST['id'], $email, $password, $_POST['city'], $_POST['avatar'], $_POST['about'], $uniqid);

它创建了用户,但在 table 的电子邮件中有密码,在密码 - 电子邮件中。 我该如何解决???

检查电子邮件和密码列的sql datatypes及其各自的长度,生成的散列可能太长或电子邮​​件列不允许某些输入。

您需要查看 MySQL 报告的错误内容

没有看到您的 table 定义(您也确实应该 post),我只能猜测您使用的密码 - 散列 - 因为它是 PK2DBF 散列,是密码字段太长。

您可能为电子邮件保留了大约 64 个字符,我知道什么,为密码保留了 16 个字符。但是密码哈希更长。因此,如果您在适合的电子邮件列中插入密码,反之则不适合。

密码列定义字段应使用类似 VARCHAR(200) 的内容。