[英]user info is not being saved into my database
好的,所以我的数据库有问题。 我正在尝试创建一个注册页面,并且一切正常。 我使用的是xampp phpmyadmin,每次输入一些信息后每次点击注册按钮时,数据库中都不会显示任何内容。
<?php
session_start();
$db = mysqli_connect("localhost", "root", "", "saver",);
if (isset($_POST[ 'register_btn'])) {
session_start();
$username = mysql_real_escape_string($db,$POST['username']);
$email = mysql_real_escape_string($db,$POST['email']);
$password = mysql_real_escape_string($db,$POST['password']);
$password2 = mysql_real_escape_string($db,$POST['password2']);
if ($password == $password2) {
//create user
$password = md5($password); //hashes password before entering into database
$sql = "INSERT INTO users(username, email, password) VALUES('$username', $email', $password,)";
mysqli_query($db, $sql);
$_SESSION['message'] = "You are now logged in";
$_SESSION['username'] = $username;
header("location: home.php"); // Redirect to home page
}else{
$_SESSION['message'] = "The two passwords do not match";
}
}
?>
<html>
<head>
<title> Submission form </title>
</head>
<body>
<form method="post" action="saver.php">
<table>
<tr>
<td>Username:</td>
<td><input type="text" name="username" class="textInput">
</tr>
<tr>
<td>Email:</td>
<td><input type="email" name="email" class="textInput">
</tr>
<tr>
<td>Password:</td>
<td><input type="password" name="password" class="textInput">
</tr>
<tr>
<td>Password again:</td>
<td><input type="password" name="password2" class="textInput">
</tr>
<tr>
<td></td>
<td><input type="submit" name="register_btn" value="Register">
</tr>
</table>
</form>
</body>
</html>
您可以通过打开并阅读PHP错误记录来发现并解决所有问题。 阅读如何做 。
您的问题在于以下几行:
$db = mysqli_connect("localhost", "root", "", "saver",);
和
$username = mysql_real_escape_string($db,$POST['username']);
首先,您的$db
末尾有一个逗号,请将其删除。 这可能会导致致命的PHP错误,您应该在错误报告中进行介绍 。
其次, $db
对象是一个MySQLi
标识符,而不是MySQL标识符,但是您已将其传递给MySQL_
函数。 因此,脚本将因错误而停止,或者数据库将插入空值。 这就是为什么您没有保存任何内容的原因。
同样(如Luke所述), MySQL_
函数具有相反的参数顺序,因此您可能只是忘记了将i
添加到函数名称中!
您还没有正确地将值封装在MySQL中-每个值都需要用单引号引起来,例如使用'$username'
完成后,需要使用$email
和$arseword
做相同的事情。
而且您还需要从MySQL VALUES集合中删除结尾的逗号...
一些额外的注意事项:
mysqli_
和mysql_
函数。 您应该只使用MySQLi_函数。 password_hash
。 header(Location:);
搬迁指令应紧跟一个脚本终止如exit;
或die();
session_start()
只能在脚本顶部被调用一次 。 编辑:
正如路加福音所阐明的:
实际的问题是
mysql_real_escape_string
仅接受一个参数(即mysql_real_escape_string($ POST ['username']);)。 无论是否使用MySQLi,都可以使用它,但是,如果使用准备好的语句,则应避免使用它。
嘿,我发现了问题。 它在插入部分。 我的编辑器中有“用户”,数据库中有“ user_info”。 因此,我只是将“用户”更改为“ user_info”。 非常感谢您的帮助。 我怎么给你信用?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.