我有一个注册,人们可以注册他们的用户名,他们的电子邮件和密码。如果成功传输到数据库,则此数据将插入名为users
的表中。现在,我需要刚注册用户的最后一个ID,用于第二个名为users_tokens
的表,我显然希望为每个特定用户保存一个令牌。我试图通过使用$ mysql-> insert_id来解决这个问题。但是在表中返回0并且我也很好奇这是否是一种安全的方法,因为通过我的网站数据会一直插入。
我的PHP脚本:
$key = getToken(32);
$token = bin2hex(openssl_random_pseudo_bytes(64));
$stmt = $mysql->prepare("INSERT INTO users (name, email, password, verification_key, register_date) VALUES(?,?,?,?,?)");
$stmt->bind_param("sssss", $_POST["name"], $_POST["email"], md5($_POST["password"]), $key, $posted_on);
$lastid = $mysql->insert_id;
$u_token = $mysql->prepare("INSERT INTO users_tokens (uid, token) VALUES(?,?)");
$u_token->bind_param("ss", $lastid, $token);
有什么建议吗?
答案 0 :(得分:0)
您只需要在检索insert_id
之前执行您的声明,类似这样的
$stmt = $mysql->prepare("INSERT INTO users (name, email, password, verification_key, register_date) VALUES(?,?,?,?,?)");
$stmt->bind_param("sssss", $_POST["name"], $_POST["email"], md5($_POST["password"]), $key, $posted_on);
$stmt->execute(); //You should check for correct execution
$lastid = $mysql->insert_id;