好的,所以我的数据库出了问题。我正在尝试创建一个注册页面,一切都没有问题。我正在使用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>
答案 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_函数。 password_hash
。header(Location:);
重定位指令应立即,然后是脚本终止符,例如exit;
或die();
session_start()
只应在脚本顶部调用一次。 修改强>
正如Luke所阐明的那样:
实际问题是
mysql_real_escape_string
只接受一个参数(即mysql_real_escape_string($ POST [&#39; username&#39;]);)。无论MySQLi是否正在使用它都可以使用它,但是当然应该避免使用预处理语句。
答案 1 :(得分:0)