$username = $_POST['username'];
$name = $_POST['name'];
$email = $_POST['email'];
$password = $_POST['password'];
$confirmpassword = $_POST['confirmpassword'];
$time = time();
if($password != $confirmpassword) {
echo '<meta http-equiv="refresh" content="0; url=?error=1" />';
die();
} else {
if($username != '') {
echo '<meta http-equiv="refresh" content="0; url=?error=2" />';
die();
} else {
$checkemail = $db->prepare("SELECT * FROM `member` WHERE `email` = ?");
$checkemail->bind_param('s', $email);
$checkemail->execute();
$checkemail->store_result();
$emailrows = $checkemail->num_rows;
$checkemail->free_result();
if($emailrows > '0') {
echo '<meta http-equiv="refresh" content="0; url=?error=3" />';
die();
} else {
$checkdisplay = $db->prepare("SELECT * FROM `member` WHERE `display` = ?");
$checkdisplay->bind_param('s', $name);
$checkdisplay->execute();
$checkdisplay->store_result();
$displayrows = $checkdisplay->num_rows;
$checkdisplay->free_result();
if($displayrows > '0') {
echo '<meta http-equiv="refresh" content="0; url=?error=4" />';
die();
} else {
if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/",$email)) {
echo '<meta http-equiv="refresh" content="0; url=?error=5" />';
die();
} else {
$createaccount = $db->prepare("INSERT INTO `member` (`display`, `email`, `salt`, `password`, `rank`, `joined`, `ip`) VALUES (?, ?, ?, ?, ?, ?, ?)");
$ip = $_SERVER['REMOTE_ADDR'];
$salt = sha1(rand(10000000, 99999999));
$encrypt = sha1($password . $salt);
$rank = '1';
$createaccount->bind_param('ssssiis', $name, $email, $salt, $encrypt, $rank, $time, $ip);
$createaccount->execute();
$getid = $db->prepare("SELECT `id` FROM `member` WHERE `display` = ?");
$getid->bind_param('s', $name);
$getid->execute();
$getid->bind_result($userid);
$getid->free_result();
if(!$userid) {
echo '<meta http-equiv="refresh" content="0; url=?error=6" />';
die();
} else {
$encryptip = sha1($ip);
session_regenerate_id();
$_SESSION['sesid'] = $userid;
$_SESSION['sesip'] = $encryptip;
session_write_close();
ob_get_clean();
echo 'success';
echo $userid;
echo $encryptip;
}
}
}
}
}
}
我只是在学习MySQLi的绳索,所以主要是从一个教程中得到这个(虽然不得不从不同的站点扔掉部分 - 因此错误)。
有人能够解释为什么$ userid会返回0
而不是1
它应该是什么?我希望这是一个简单的错误。
查询是正确的,我多次查看过,是的,$name
已设置。
答案 0 :(得分:0)
严格来说,您不需要以这种方式选择用户ID。当您刚刚在表中插入数据时,您可以调用insert_id()函数来获取自动生成的id。就是这样。
一般来说,这样的“问题” - 再次:您必须隔离该代码段,添加代码以验证每个单一的前提(var_dumping输入,选择raw没有条件的数据库内容,比较db中的数据和输入(我的意思是代码比较并输出结果))和 - 如果仍然无法解决 - 能够发布两个代码和输出在你的问题中,要使其理智且负责任。
您必须了解代码在真空中不存在。它在服务器上运行,具有独特的环境,它使用数据库,它处理一些输入 - 所有这些事情完全为读者所知 - 因此它提出的问题只包含完全没用的代码。