用户信息未保存到我的数据库中

时间:2017-01-04 00:26:56

标签: php mysql xampp

好的,所以我的数据库出了问题。我正在尝试创建一个注册页面,一切都没有问题。我正在使用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>

2 个答案:

答案 0 :(得分:2)

  

您可以通过阅读和阅读PHP错误记录来发现并解决您遇到的所有问题。 Read How to do that

你的问题在于以下几点:

$db = mysqli_connect("localhost", "root", "", "saver",);

$username = mysql_real_escape_string($db,$POST['username']);

首先,您的$db在结尾处有一个剩余的逗号,将其删除。这导致您应该使用error reporting获取可能致命的PHP错误。

其次,$db对象是MySQLi标识符,而不是MySQL标识符,但您已将其传递给MySQL_函数。因此,脚本将停止错误或数据库将插入空值。这就是为什么你没有得到任何保存的原因。

另外(如Luke所述)MySQL_函数具有反转的参数顺序,因此您可能只是忘记将i添加到函数名称中!


您还没有在MySQL中正确包含您的值 - 每个值都需要用单引号括起来,例如您使用'$username'进行的操作,您需要使用$email执行相同的操作$arseword

您还需要从MySQL VALUES集合中删除尾随逗号...

一些额外的说明:

  • 您在代码中使用mysqli_mysql_函数。您应使用MySQLi_函数。
  • 你应该认真考虑(如; DO THIS !!! )使用Prepared Statements而不是程序性SQL。
  • 对于散列密码,MD5绝对是not suitable。停下来。使用password_hash
  • header(Location:);重定位指令应立即,然后是脚本终止符,例如exit;die();
  • session_start()只应在脚本顶部调用一次
  • 说真的,请使用准备好的声明。他们周围有数百个很好的例子。
  • 通过使用和阅读并对PHP Error Logging做出反应,你将为自己(以及许多人)节省数百小时的压力!

修改
正如Luke所阐明的那样:

  

实际问题是mysql_real_escape_string只接受一个参数(即mysql_real_escape_string($ POST [&#39; username&#39;]);)。无论MySQLi是否正在使用它都可以使用它,但是当然应该避免使用预处理语句。

答案 1 :(得分:0)

嘿伙计们,我发现了这个问题。它在插入部分。我有#34;用户&#34;在我的编辑器中,我有&#34; user_info&#34;在我的数据库中。所以我只是将用户&#34;改为&#34; user_info&#34;。非常感谢你的帮助。我怎么能给你信用?