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)
的内容。
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)
的内容。